PDA

Ver la versión completa : ty123's Crackme Easy de Ricardo Narvaja



miacpi
24-02-2011, 01:52
Hola,
Este programa tiene la APi IsDebuggerPresent, es explicado en el tutorial como quitarlo en el 19 de Ollydbg Curso de Cero de Ricardo Narvaja.

Sin embargo no explica como conseguir el Serial. Una vez quitada la proteccion anti debuger.

Intento encontrar el serial.

1) Cojo message cuando clicko Check . El mensaje WM_UP 202
2) Conseguido llegar y para. Bien ahora busco en memoria el password que he introducido 989898.
3) Hago un breakpoint access a esa direccion.
4) veo que 989898 lo copia en otra direccion con REP MOV ESI ... DSI
5) La nueva direccion tiene el password falso 989898 asi que hago otro Breakpoint access. Y le doy al run. Llego aqui.

El codigo siguiente traduce 989898 decimal en hexadecimal quedando F1ACA en EAX.

Mi problema viene aqui:

PUSHAD
ROL EAX,2 F1ACA (989898)
MOV DWORD PTR DS:[40316D],EAX EAX=003C6B28 401316D=28 6B 3C 00 (1)
ADD EAX,7479 (3CDFA1)
XOR EAX,313233 (DED92)
SHL EAX,6 (37B6480)
MOV DWORD PTR DS:[403172],EAX // modifica 1397 ascii por otro Cambia
POPAD

/* Esta comparacion entiendo que no es importante */

[403172] 13971 31 33 39 37 31 //no esta definido Cambiara el numero con el numero que pongamos
[403177] 1C E7 6B 7A 30 // esta definido

[403172] 80 64 7B 03 (NO VALIDO)
[403177] 1C E7 6B 7A (VALIDO)

/***************************************/

Esta si:

---------------------------------

MOV ESI,00403168 //esta definido
[00403168]=7A 6B E7 1C

MOV EDI,0040316D //no esta definido (1) SE DEFINE CON HEXADECIMAL ROL EAX,2.
[0040316D]=28 6B 3C 00

004013E7 MOV AL, BYTE DS:[ESI]
MOV DL,BYTE DS:[EDI]

CMP DL,AL
JNZ 004013FA
INC ESI
INC EDI
TEST AL,AL
JNZ SHORT 004013E7

XOR EAX,EAX
INC EAX
JMP 004013FC
XOR EAX,EAX
004013FC RET

PERO AL=0 Y BX=0
NECESITAMOS

!AL=0 bx=1; //CODIGO CORRECTO

004012a4 TEST AL,AL //SI NO ES CORRECTO VALE AL=0;
JE 004012EE //mal mensaje
push ebx
cmp bl,1
je short 003012d5 // mensaje crack correcto!
----------------------------------------------------


Mi pregunta es :

1) ROL EAX,2 ; F1ACA (989898) que es lo que hace?? he mirado tutos pero no lo entiendo muy bien


MOV ESI,00403168 //esta definido
[00403168]=7A 6B E7 1C

MOV EDI,0040316D //no esta definido (1) SE DEFINE CON HEXADECIMAL ROL EAX,2.
[0040316D]=28 6B 3C 00

ROL EAX,2 F1ACA

7A6BE71C = ROL EAX,2 // tendriamos que buscar un valor que fuera igual al serial correcto 7A6BE71 para que nos dejara seguir y no cerrar el programa

Como lo hariais?

2) EBX siempre es 0 y si fuera 1 nos mandaria directamente al mensaje de Well done! Como se haria porque no veo BX que varie. Quiza el trozo mas importante es de mas adelante?


Gracias por todo, espero vuestra ayuda.

miacpi
24-02-2011, 17:12
Ya esta lo consegui !!

Serial valido: 1CE76B7A en binario:
00011100 11100111 01101011 01111010
ROL EAX,2: mueve a la derecha 2 bits en rotacion. Yo pensaba solo cada 1byte
10000111001110011101101011011110
en decimal es 2268715742
http://img59.imageshack.us/i/ty123.png/
http://img59.imageshack.us/i/ty123.png/