Thedary, no puedo entrar mucho en concreto porque el decir como lo estoy haciendo expondría las aplicaciones que llegase a hacer.
Un método que he visto es poner el código (encriptado con blowfish) en dlls empacadas con upx (aunque que hay mejores virtualizadores) que se cargan a la memoria activa de la aplicación. Pero no es el método que uso porque siempre se le puede hacer unpack, reverse, edit & pack al código directo sobre la dll o incluso desde el exe (en ASM siempre es lo mismo).
Pero rutinas de autenticación de seriales no deben estar dentro de tus códigos que colocas en el ams, ya que se guardan en el cdd zip y ese se descomprime, edita y vuelve a empacar en menos de 3 minutos (cronometrados).
Por ejemplo he visto plugins (no mencionaré títulos) que supuestamente te generan licencias y ese tipo de cosas, pero al final siempre retornan un valor que debe ser evaluado con algo tan simple como:
if x==1 then do "esto" else aquello end
Cualquiera puede entrar a esa parte del código y cambiar (por ejemplo) el "if x==1 then" por "if x~=1 then" o mejor aún....ponerle a X siempre el valor de 1 jajaja. Incluso alguien puede sustuir el plugin original por uno creado por sí mismo (CLON jajaja), cuyas funciones siempre retornen el mismo valor sin procesar nada y así no modificar el programa anfitrión.
Desde mi punto de vista esos plugins deberían tener ese tipo de evaluaciones (if then else) dentro del código del plugin sin valores que retornar por parte de las funciones. Sólo hacer un simple os.exit() si falla la verificación.
Pero aún así, como dije antes, se les puede hacer reverse. Algo un poco más difícil de crackear sería cargando las funciones a la memoria del programa (aún mejor en corutinas porque se colocan en threads por separado) pero sin que éstas esten disponibles en archivos cualesquiera. Y aún así se le puede hacer un dump al proceso, sacar el código, etc. y hacer un process loader/patcher.
Otra opción es tener un exe empacado (con algo no tan comercial) que reciba, procese y retorne valores ya digeridos a la aplicación a modo de 2-3 steps validation. Miento, cualquiera puede interceptar ams jajajaja....
Bueno, basta de charla....me voy a tomar un cafe para seguir hasta las 5o 6 am (hora actual 8:41pm).