Bueno antes que todo, para proteger un software se debe evitar o al menos entorpecer la lectura del código muerto (el código desensamblado), para eso no debieras utilizar strings estables como serial o como mensajes. Me explico:
Si tu programa muestra un mensaje "Serial Incorrecto" este mensaje al menos debiera estar encriptado, de modo que al desensamblar no pueda ubicarme, ¿comprendes?.
Luego de esto, de asegurarte que al desensamblar no quedan cadenas de texto "comprometedoras" puedes proceder a proteger el soft contra Debugers.
El debuger más utilizado es el softice, ademas es mi preferido.
en mi page
http://3bc0.sitio.nethttp://3bc0.cjb.netPuedes encontrar la manera de detectar softice, es un código para delphi.
Aver si cme mandas el soft, y lo probamos =), aver si resiste al menos mis intentos.