Ayuda para modificar .exe de MS-DOS 16-bit para saltar serial

Iniciado por pic16f876, 8 Febrero 2010, 09:32 AM

0 Miembros y 1 Visitante están viendo este tema.

pic16f876

Hola, este es mi primer mensaje a este foro. He leido mucho en el, pero ultimamente estoy muy atascado. A ver si estamos de suerte y alguien me puede hechar una mano.

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.

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.  :huh:

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?

ThunderCls

utiliza un Editor Hexa, localiza el offset y parchea los bytes correspondientes
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

MCKSys Argentina

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


pic16f876

Ok, gracias. Voy a mirar como se hace esto de localizar el offset (¿la dirección de memoria?) y parchearlo...

pic16f876

Hola ThUnDeR_07, eres un Crack!

Siguiendo tus indicaciones FINALMENTE hoy ha vuelto a funcionar bien la empresa. Muchas gracias por tu gran ayuda.

TEMA CERRADO!!! (Con mayúsculas de alegria!) ;-)

ThunderCls

-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/