Jyri Poldre writes
It seems to me, that the problem lies in the function of HW key in program. If it is used in "check the existance" way then you can easily remove the checks from binary code. And it does not matter what is the essence of checking- You will always have CMP KNOWN_DATA, HW_KEY RESPONSE.
"Check the existence" is only used by amateurs. A typical gimmick, one that I wrote, is get information from the hardware, mangle it, put it on the stack, and execute it. And there are loads of tricks like that that can seriously obfuscate code. No software protection scheme is unbreakable, but it is easy to make a protection scheme that is not worth breaking. Of course the inconvenience to the user may well be such that it is not worth protecting, either. -- --------------------------------------------------------------------- We have the right to defend ourselves and our property, because of the kind of animals that we James A. Donald are. True law derives from this right, not from the arbitrary power of the omnipotent state. jamesd@acm.org