Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: rave en 6 Mayo 2008, 18:32 pm



Título: Una ayuda que esto atascado
Publicado por: rave en 6 Mayo 2008, 18:32 pm
A ver si me ayudáis a seguir, que no se por donde seguir.

Tengo un programa en delphi, el botón de "registro" (nombre y nº serie) está en la dirección 004bb5f0. Si modifico el salto en la dirección 004bb63a me dice que el programa está registrado, pero en vedad no se registra, solo muestra el mensaje.

Después de la dirección 004bb5f0 hay 3 calls, pero no encuentro nada que me ayuda a seguir.

¿Alguna pista para continuar?

Aquí una captura a partir de la dirección 004bb5f0:

(http://i29.tinypic.com/oruofm.png)



Título: Re: Una ayuda que esto atascado
Publicado por: tena en 6 Mayo 2008, 20:40 pm
Call 4b67a0
test al,al
je 4bb662   <<= Salta a No registrado

Pues si, si solo invertis el salto nomas te va a mostrar el mensaje de registrado..

Aqui tenes que hacer que de esa call retorne un AL=1 ( Registrado )...

una facil es entrar a la call, y ensablas un:

mov al,1
retn

avisa si funka...

tena


Título: Re: Una ayuda que esto atascado
Publicado por: rave en 6 Mayo 2008, 20:51 pm
Gracias por la respuesta, no me funciona.

Sigo en ello, dentro del call entra en otros call, y me termino perdiendo. Esto es lo que hay dentro del call:

(http://i32.tinypic.com/aw6amo.png)


Título: Re: Una ayuda que esto atascado
Publicado por: Shaddy en 6 Mayo 2008, 21:45 pm
el problema es que al final tienes otro call, si te fijas justo antes del RETN tienes otro call, pues entra en este y ve al final y haz que AL o EAX valga 1.

Salu2..

P.D: el call de 4B6807, ah y si le das al boton derecho, Appearance - Highlight o algo así y pones Cristhmas Tree o algo así tb xD, será menos doloroso ver ese pedazo de código.


Título: Re: Una ayuda que esto atascado
Publicado por: rave en 7 Mayo 2008, 00:01 am
Gracias por la respuesta. Dentro de ese call hay mas calls, y dentro de cada uno más. he  realizado algunas pruebas sin éxito.

No se exactamente que tengo que buscar, he intentado seguir el programa cuando introduzco unos datos 'malos', hace infinidad de calls y operaciones. Mira que escogí este ejecutable porque parece fácil.

¿alguna sugerencia más? Si no pues intentaré con otro.


Título: Re: Una ayuda que esto atascado
Publicado por: tena en 7 Mayo 2008, 00:47 am
Pues este parece facil... segui con este que ya lo sacas...

Fijate dentro del call que te dijo Shaddy, que ahi esta la papa...
La cosa es que retorne AL=1

Si queres pegate otra imagen

Saludos


Título: Re: Una ayuda que esto atascado
Publicado por: rave en 7 Mayo 2008, 13:16 pm
Venga que me animo, dentro del último call encuentro esto:

(http://i30.tinypic.com/2e696ye.png)

y el último call de la pantalla anterior:

(http://i30.tinypic.com/vgykz.png)

y de nuevo otro call:

(http://i31.tinypic.com/rjec7p.png)

He probado en cada uno de los call cambiar el valor de al o eax (no en todos a la vez), pero no me funciona. La clave está en alguno de los muchos call, pero no se exactamente que buscar para cambiarlo.


Título: Re: Una ayuda que esto atascado
Publicado por: apuromafo CLS en 7 Mayo 2008, 19:46 pm
Call 4b67a0
yo creo que ese es un call de varios piensa que ahi comprueba su rutina

yo creo que deberia dar resultado el mov al,1


pero quizas no son todos al,1 que se necesitan
puede ser incluso un mov al,2
o xor eax,eax
mov al,1
mov bl,1
mov cl,1
etc


pues coloca todas las referencias a ese call
ctr r
y verifica en otro lugar donde realmente se muestre como registrado..
mucho antes que se registra.debe haber un similar..

busque el programa en internet pero no le doy jpgserve.. obiamente faltan mas palabras animate, quizas ese es una parte de diez mas

incluso puedes cambiar desde el no registred

obiamente falta algo..


Título: Re: Una ayuda que esto atascado
Publicado por: rave en 7 Mayo 2008, 21:01 pm
Gracias por la respuesta, me voy a poner después de cenar a ver si saco algo.

El programa en sí es una chorrada, por eso lo elegí, hace una captura de una webcam y la guarda en jpg. (solo ocupa 900kb). Es este:

http://w16.easy-share.com/1700338760.html

Luego pongo si he sacado algo.


Título: Re: Una ayuda que esto atascado
Publicado por: tena en 7 Mayo 2008, 22:46 pm
Le voy a hechar una mirada mas de cerca jeje....
Ahi veo un push eax y un pop eax, como que mantiene ese valor...

tena


Título: Re: Una ayuda que esto atascado
Publicado por: tena en 7 Mayo 2008, 22:57 pm
lo ejecuto y no me aparece nada
¿?


Título: Re: Una ayuda que esto atascado
Publicado por: tena en 7 Mayo 2008, 23:02 pm
Hay un archivo .ini que tiene los datos del registro

[register]
user=
key=



Título: Re: Una ayuda que esto atascado
Publicado por: rave en 8 Mayo 2008, 00:14 am
si no hace nada es que hay que registrar la librería que he subido con el programa, es una libreria estandard para comunicarse con ciertas cámaras.

El ini ya lo había probado, y aunque lo rellenes no hace nada. Me voy a poner ahora con los calls a ver que tal.

Gracias por la ayuda!


Título: Re: Una ayuda que esto atascado
Publicado por: solidcls en 9 Mayo 2008, 02:29 am
El parche es este:


004B64A4      B0 01         MOV AL,1
004B64A6      C3            RETN


saludos.
Solid.


Título: Re: Una ayuda que esto atascado
Publicado por: rave en 9 Mayo 2008, 23:54 pm
solidcls muchas gracias. Efectivamente así parece que el programa esta registrado.

Lo que has hecho es modificar la comprobación inicial del programa ¿no?, ya se que soy algo pesado, pero ¿me puedes decir de una forma rápida como has llegado hasta ahí?, es para yo seguir investigando.

Muchas gracias por la ayuda.


Título: Re: Una ayuda que esto atascado
Publicado por: mikello en 10 Mayo 2008, 01:28 am
Hola!

La explicación de por qué el parche es el que proponía solidcls es el siguiente:

· Ejecutamos el programa en OllyDbg. Cuando sale el MessageBox, pausamos y ejecutamos hasta que se produzca la vuelta al código cliente (Alt+F9). Al pulsar sobre el botón de aceptar, paramos en 46091F. Subiendo un poco vemos que desde 460910 está la llamada a MessageBoxA, y si bajamos desde 46091F vemos que no hay ningún salto que permita "puentear" la llamada a la API, por lo que esa función entera es llamada en caso de no estar registrado.

· Entonces, pulsamos Ctrl+F9 y con F7, salimos a la función que llamó al procedimiento que mostraba el MessageBox (460834...460988). Caemos en una zona que el programa utiliza para restablecer EBX, ESI y EDI de manera genérica así que seguimos hasta el RET.

· Este RET nos lleva a 4B851A. Si nos fijamos, la línea siguiente en la que caemos es apuntada por un salto. Dicho salto está en 4B8500 y éste sí que permite evitar llamar al MessageBox:

Código:
004B84F9  |.  E8 A6DDFFFF   CALL jpgserve.004B62A4
004B84FE  |.  84C0          TEST AL,AL
004B8500  |.  75 1A         JNZ SHORT jpgserve.004B851C
004B8502  |.  6A 00         PUSH 0
004B8504  |.  B9 58874B00   MOV ECX,jpgserve.004B8758                ;  ASCII "Unregistered Version"
004B8509  |.  BA 70874B00   MOV EDX,jpgserve.004B8770                ;  ASCII "You are running an ..."
004B850E  |.  A1 B4214C00   MOV EAX,DWORD PTR DS:[4C21B4]
004B8513  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
004B8515  |.  E8 1A83FAFF   CALL jpgserve.00460834
004B851A  |.  EB 38         JMP SHORT jpgserve.004B8554
004B851C  |>  8D55 84       LEA EDX,DWORD PTR SS:[EBP-7C]

· He copiado toda esa zona, para que observes que primero se llama a 4B62A4, y después se comprueba si devolvió diferente de cero, en cuyo caso salta el código que muestra el MessageBox. Nos introducimos entonces en la función 4B62A4, y tenemos:

Código:
004B62A4  /$  E8 FB010000   CALL jpgserve.004B64A4
004B62A9  \.  C3            RETN

de manera que volvemos a introducirnos en 4B64A4, y estaremos en la rutina que comprueba si el programa está registrado. Ensamblamos lo comentado anteriormene, y todo irá de perlas...

Saludos, mikello


Título: Re: Una ayuda que esto atascado
Publicado por: rave en 12 Mayo 2008, 15:35 pm
Muchas gracias, me queda muy claro. Ahora me pondré con unos crackme antes de seguir con aplicaciones.