Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - pic16f876

#1
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!) ;-)
#2
Ok, gracias. Voy a mirar como se hace esto de localizar el offset (¿la dirección de memoria?) y parchearlo...
#3
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?