Bueno, iba a explicar básicamente lo que ha dicho Neftalí, tan sólo que él lo ha explicado muchísimo mejor de lo que habría dicho yo.
Resumiendo:
el código fuente no se puede recuperar.
Aunque se puede
extraer muchísima información, eso sí. He contado alguna vez que en un trabajo que tuve se decidió hacer un sistema de números de serie y claves bastante "seguro", se invirtió tiempo y dinero, y estuvimos mis compañeros y yo dedicado exclusivamente a ese tema durante 9 meses (fue un parto dificil

), incluso nos asignaron un presupuesto para equipos, utilidades, libros, contactamos con algunos expertos "crackeadores" de programas, y finalmente llegamos a la conclusión de que no valía la pena tanta inversión y esfuerzo, lo principal era despistar al posible intruso, marearlo dando vueltas de un lado a otro del programa, usar truquitos como los que ha comentado Neftalí y conseguir que sea tan aburrido, monótono, pesado, enrevesado, ... que el "cracker" se aburra y lo deje, simplemente por no perder más tiempo con el dichoso algoritmo.
Por cierto, el sistema de protección lo desactivó un ruso en apenas una semana y publicó un programita keygen que daba las claves igual que nuestro programa generador de claves.