There is no real protection against illegal reverse engineering, aka 'cracking' & 'hacking' because at the end of the day, the CPU still has to acess the instructions. However, you can make life absolute hell for anyone that wants to make sense of your app without your permission, waste there time, and by the end of it, they will give up. To protect against simple dissasmbly, all you have to do is find an exe packer/encrypter, either will do, and use it. The above method will still leave your code open to dumping once it has been loaded into memory. To really annoy someone make your code unorganised with lots of random jumps in it. Another thing is to jump into the middle of opcodes, for example:

mov eax,12345
mov ecx,34567
mov edx,23942
can be disguised as:

00401000 EB01                   jmp     loc_00401003
00401002 EAB839300000B9         jmp     B900:3039B8h
00401009 07                     pop     es
0040100A 8700                   xchg    ,eax
0040100C 00BA865D0000           add     ,bh
how? add an extra byte into the instruction stream, and jump over it.

jmp @F
BYTE 0eah
@@:
mov eax,12345
mov ecx,34567
mov edx,23942
This will 'disguise' things, but anyone smart will notice the jump into nowhere. Also you can implement some sort of runtime encryption/decrytion routines.
Posted on 2001-05-06 01:16:00 by George