Aqui un par de tips que pude recompilar y tambien de mi propia experiencia.:
1>Evita los mensajes como "Te tengo lamer... jajaja, estas re mal"
2>Intenta usar encriptacion asimetrica
3>Nunca uses archivos con significado como licencia.dat
4>No alertes que la clave es erronea al momento de chequear la clave, si es erronea, espera, haz algunas cosas mas y luego alerta.
5>Añade delays cortos, como pausas, antes, en el medio y despues de la comprobacion....
6>Usa checksums en todo, dlls, exe, etc...
7>Parchea tu propio software, haz distintas rutinas de validacion para el mismo programa.
8>Guarda serials en lugares poco comunes
9>Guarda nros de series en varios lugares, luego comprueba si son iguales, pero no lo hagas todo junto, sino de a partes... al final, si alguno es difierente... alerta, pero tampoco en el momento.
10>No uses cadenas literales, en lo posible, las cadenas como "chico malo" o "chico bueno" tenelas encryptadas antes de enviar el mensaje, las desincriptas al momento, las usas, y las vuelves a cifrar.
11>Codigo basura, mete mucho codigo de
basura en el medio de la rutina de comprobacion, codigo parecido al que viene antes y despues de comprobacion, camuflalo.
12>Juega con codigo con muchas condiciones inutiles, je, jne, jz por todos lados antes, en el medio y despues de la rutina de comprobacion
13>Usa buena encryptacion, simple XOR no basta.
14>Usa serials largos, no 32 caracteres, sino varios Kb.
15>Evita usar la common runtime library de tu compilador (msvcrt, msvbcrt, etc...) para cosas que puedes programar tu mismo, como strlen, strcpy, strncat, etc...
16>No confies solamente en enpaquetadores
17>Usa ventanas de carga (es imagen que aparece mientras el programa carga), en esa dll, mete codigo de comprobacion tambien, muchas veces se saltaran esa pantalla porque molesta.
18>En la generacion de llaves, usa RCR y RCL, y si logras, trata que el Carry Flag este puesto con una rutina matematica pseudo aleatoria, de esa manera es dificil saber si rotar_si_acareo va rotar los bits o no.
19>Usa parte del codigo, (bytes de la ejecutable) como parte de la tabla de numeros magicos, asi si parchean el codigo, los numeros magicos ya no son los mismos.
20>Juega con la mente del cracker, si detectas un debugger, no termines el programa, que continue, pero haz la rutina de comprobacion distinta, en otro lugar... cosa que si el cracker logra detectar tu rutina y hace un keygen, no le servira al menos que ejecute el programa dentro del depurador.
21>No te gastes en escribir codigo para matar depuradores
22>cifra serials y nombres y comprueba si coinciden con tu manera.
encrypt the name/serial and check if it matches YOUR way of registering the program.
23>NUNCA, NUNCA pongras la rutina de generacion de llaves dentro de tu programa. Debes crear la rutina inversa, tomate el tiempo.
(NO HACER ESTO: if(generarllave(usuario)==serial_ingresado){ registro ok }
cifra todo el texto en el programa, o la mayoria de el.
Se les ocurre algun otro? o tambien si alguno esta mal?
Saludos
Enko