In addition to what LMiller7 said, I would add that being very difficult isn't the only part of the problem. There are some projects that modify programs from the binaries alone, but yes, it takes an expert in assembler and Windows to understand the whole thing. There are two additional problems I can see:
For one, each time the program is updated, your patch is lost. And regenerating it could be a challenge as the internal structure could have changed as well. So take that into account.
Second, it may be illegal to do so. Some programs explicitly forbid any kind of modification to them in their licenses, some even without being redistributed. While being actually enforced is terribly difficult in practice, it's simply not a good thing to do, specially massively.
However, there is one big exception to everything said in this thread: Open Source Software
In case you have access to the source, changing it is often much easier than making the change in the binary. You need to understand the language and the conventions used in the project, but it's much easier to simply change a line of text, recompile yourself and have a sane binary ready for use, with full legal permission to do so and even to redistribute if you want. Any free software provides such an oportunity. The only thing required to do so is the technical knowledge that takes to understand all those concepts.