En la empresa tenemos un programa en MS-DOS que es básico para el correcto funcionamiento de esta. Como era de suponer la empresa propietaria dejo de dar servicio a este programa hace años. Hace un tiempo el único ordenador (Pentium I a 100) que lo usaba empezó a funcionar mal y decidimos sustituirlo por otro reciclado (AMD Duron a 1 GHz).
Cuál es nuestra sorpresa que al executarlo, nos pide un número de serie de 16 cifras. Probándolo en varios ordenadores, en todos pide un número de serie que, por lo que supongo, es diferente en todos ellos ya que te dan un número de referencia diferente. Preguntandole al único trabajador que estaba cuando se compró el programa, dice que siempre que había problemas la empresa del programa venía y lo arreglaban o reinstalaban ellos.
Después de esta larga introducción, os explico los pasos que he hecho hasta el momento. Primero de todo, y después de buscar por varios foros, instalé y probé el SoftIce y el OllyDbg. Curiosamente y supongo que al ser un programa de 16-bit, no me permitia abrir el .exe principal (El cuál se accede a través de un Betrieve del que no he aclarado su funcionamiento).
Me instalé el IDA Pro y pude ver el código en ensamblador del programa y consecuentemente, me tuve que estudiar el lenguaje ensamblador para entender un poco como funcionaba. Después de muchas horas, al no entender de donde saca el serie de referencia, y no encontrar el serie que compara, me pareció entender una comparación que saltaba a una rutina que sacaba un mensaje de clave incorrecta y salia del programa. Así que después de dicha comparación había un "jnz subrutina", el cuál supongo que poniendo "jz subrutina" me tendría que correr correctamente el programa.
Código:
seg002:15E4 cmp byte_206B7, 0
seg002:15E9 jnz short locret_1459E
El problema viene en que no he encontrado la manera de modificar este código en IDA Pro.
Investigando un poco mas, con el Lenguage 2000 vi que el programa estaba programado en Pascal y compilado en Turbo Pascal.
Así pues, instalé el Turbo Pascal Debugger 3.2 en MS-DOS en un ordenador funcionando en Windows 95... Pero ahí ya me pierdo. El código es mucho mas complicado y no veo por donde va...
Alguien me puede echar una mano?