Hola!
Pues para sacar el algoritmo, vas a tener que depurar el ejecutable.
El código lo vas a ver en lenguaje ensamblador, por lo que, si no lo sabes, estás frito
Si entiendes algo de ASM, pues sigue el algoritmo con el fin de "ver" qué es lo que está haciendo el programa con los datos que le ingresaste (ya sea Nombre, Serial, etc).
Si puedes interpretar lo que el EXE hace, entonces podrás hallar un Serial que cumpla con las condiciones que exige la rutina. Incluso, puedes hacer un keygen.
Por ejemplo:
Su pongamos que el programa te pide que ingreses un Nombre y un Serial. Como Nombre ingresas MCKSys y como serial 0123456789.
Ahora, el programa, primero verificará el largo del serial ingresado. Este debe ser de 15 caracteres. Aqui ya fallamos, pues hemos ingresado 10, con lo cual, repetimos el proceso anterior y le ingresamos 15 caracteres: 0123456789abcde. Cuando el programa compruebe nuevamente el largo del serial, verá que es 15, con lo que esta "protección" ha sido pasada.
Bueno, por ejemplo, el programa luego puede hacer operaciones sobre el Nombre a fin de generar un código "intermedio". De la misma forma, usa otra (o la misma) rutina para "tratar" el Serial y obtiene otro código intermedio.
Si ambos códigos coinciden, entonces el Serial ingresado es correcto para el Nombre dado. Y, por lo tanto, el programa está registrado
Bien, esto es sólo una idea muy "superficial" de lo que una rutina de comprobación de Serial puede hacer. Hay MILLONES de métodos distintos de verificar pares Nombre-Serial.
Espero lo dicho te sea útil...
Saludos!