Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: pic16f876 en 8 Febrero 2010, 09:32 am



Título: Ayuda para modificar .exe de MS-DOS 16-bit para saltar serial
Publicado por: pic16f876 en 8 Febrero 2010, 09:32 am
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.

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


Título: Re: Ayuda para modificar .exe de MS-DOS 16-bit para saltar serial
Publicado por: ThunderCls en 8 Febrero 2010, 17:03 pm
utiliza un Editor Hexa, localiza el offset y parchea los bytes correspondientes


Título: Re: Ayuda para modificar .exe de MS-DOS 16-bit para saltar serial
Publicado por: MCKSys Argentina en 8 Febrero 2010, 21:54 pm
One Byte Patching... jejeje  ;D


Título: Re: Ayuda para modificar .exe de MS-DOS 16-bit para saltar serial
Publicado por: pic16f876 en 10 Febrero 2010, 02:54 am
Ok, gracias. Voy a mirar como se hace esto de localizar el offset (¿la dirección de memoria?) y parchearlo...


Título: Re: Ayuda para modificar .exe de MS-DOS 16-bit para saltar serial
Publicado por: pic16f876 en 12 Febrero 2010, 01:06 am
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!) ;-)


Título: Re: Ayuda para modificar .exe de MS-DOS 16-bit para saltar serial
Publicado por: ThunderCls en 12 Febrero 2010, 15:05 pm
 :rolleyes: :rolleyes:
pues nada, felicidades a ti  ;-)
saludos