Hola!
El tema es que si no le aplicas Ingenieria Inversa a la rutina que comprueba el serial, normalmente es CASI imposible determinar el serial correcto.
Por ej, si uno de los seriales validos tiene 6 caracteres, entonces tendras todas las combinaciones de caracteres imprimibles elevados a la 6 (lo cual es un numero muy grande). Si un proceso de brute force demoras 1 segundo por cada comprobacion, en unos años tendras tu serial...
No hablar si el serial tiene un diccionario (listado de caracteres validos) o si para cada usuario/maquina hay 1 serial solamente. Con eso, te pasarias ese tiempo buscando 1 sola combinacion de caracteres.
En fin, lo mejor es analizar el programa, sacarle el algortimo, reversearlo y despues hacer el keygen...
De ultimas, siempre puedes parchear o hacer un loader
Saludos!