I was under the [naive] impression that _every_ security check finally boils down to one JMP statement. Can you please explain what makes other programs more difficult to crack than flipping the one JMP location?
Instead of a JMP, imagine that the serial key is used to calculate some variable in the program. The code runs with both a valid and an invalid serial, but some core algorithm of the program uses this variable, that was derived from the serial. If the serial was invalid, the core algorithm would not produce the desired result.