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)
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
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)
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.
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.
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
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.
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..
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.
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
lo ejecuto y no me aparece nada
¿?
Hay un archivo .ini que tiene los datos del registro
[register]
user=
key=
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!
El parche es este:
004B64A4 B0 01 MOV AL,1
004B64A6 C3 RETN
saludos.
Solid.
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.
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:
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:
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
Muchas gracias, me queda muy claro. Ahora me pondré con unos crackme antes de seguir con aplicaciones.