With reverse engineering, you can disassemble, edit and do a lot more. This is probably used for cracking software in order to get the full versions and avoid using actual money.
I do not really know how keygens work though... but I have read a lot of articles about the difficulty of protecting your work from reverse engineering.
Let's focus on the part of a program where you have to pay in order to get the full protection, then people can do some reverse engineering and find out how to program work and then replace some variables in order to crack the access point or by doing another smart move.
Is it even possible to protect yourself from such things? I mean even with an obfuscated coding style, it is still possible to disassemble and edit the program correct?