Como empezar a leer y analisar valores del Ollydb

Iniciado por Shell Root, 11 Junio 2015, 06:26 AM

0 Miembros y 1 Visitante están viendo este tema.

Shell Root

Bueno siguiendo con el tema del crack para esta aplicación https://dl.dropboxusercontent.com/u/71932290/demo.exe

1. Inicialmente tenia el problema de empezar a debuggear porque tenia la función IsDebuggerPresent, este logre pasarlo mediante analisis de código y con el Olly que me paso tincopasan que fue esté http://www.mediafire.com/download/n4cfbfhzgnalmks/temp.rar

Después empece a buscar el punto donde se ingresa el seria que se compone de la siguiente estructura:

Numero de Serie: 123 - 12345 - 12345
Identificador: 9482F5FEA75B983E
Clave: Indefinido

Llegue al punto donde se empieza a evaluar los grupos del número de serie



De ahí pues imagino que tengo que empezar a pasar con F8 a ver los valores, pero no tengo idea, aclaro que lo que puse fue meramente empirico. Me ayudan? Por lo menos lo intente jejeje

Código (asm) [Seleccionar]
0070E50E   . 8D85 FCFEFFFF  LEA EAX,DWORD PTR SS:[EBP-104] ; Recoge el valor de la dirección DWORD en EAX
                                                          ; EAX en este momento vale EAX=0000000D
0070E514   . E8 FB46CFFF    CALL erstatto.00402C14         ; LLama la dirección 00402C14 que si busco más arriba es un PUSH a EDX
0070E519   . 85C0           TEST EAX,EAX                   ; No se que es pero lo vi con la flag Z cuando intente sacar el IsDebuggerPresent
0070E51B   . 75 07          JNZ SHORT erstatto.0070E524
0070E51D   . C745 FC 010000>MOV DWORD PTR SS:[EBP-4],1     ; No se que es pero sale Stack SS:[0012EB20]=00000000
0070E524   > BA 05000000    MOV EDX,5                      ; Mueve 5 a EDX ; EDX=00802079 (erstatto.00802079), ASCII "P15"

; Aquí creo que empieza a evaluar el segundo grupo del número de serie

0070E529   . 8D85 FDFDFFFF  LEA EAX,DWORD PTR SS:[EBP-203] ; Stack address=0012E921, (ASCII "12345")
                                                          ; EAX=00000000
0070E52F   > 8A08           MOV CL,BYTE PTR DS:[EAX]       ; EAX es 12345
                                                          ; Stack DS:[0012E921]=31 ('1')
                                                          ; CL=00
                                                          ; Jump from 0070E544
0070E531   . 80F9 41        CMP CL,41 ; CMP Es un condicional y evalua que CL sea 41 pero en este caso es
                                                          ; CL=31 ('1')
0070E534   . 72 05          JB SHORT erstatto.0070E53B
0070E536   . 80F9 5A        CMP CL,5A
0070E539   . 76 07          JBE SHORT erstatto.0070E542
0070E53B   > C745 FC 010000>MOV DWORD PTR SS:[EBP-4],1     ; Stack SS:[0012EB20]=00000001
                                                          ; Jump from 0070E534
0070E542   > 40             INC EAX ; Incrementa EAX
                                                          ; EAX=0012E921, (ASCII "12345")
                                                          ; Jump from 0070E539
0070E543   . 4A             DEC EDX ; Decrementa EDX
                                                          ; EDX=00000005
0070E529   . 8D85 FDFDFFFF  LEA EAX,DWORD PTR SS:[EBP-203]
0070E52F   > 8A08           MOV CL,BYTE PTR DS:[EAX]
                                                          ; Stack DS:[0012E922]=32 ('2')
                                                          ; CL=31 ('1')
                                                          ; Jump from 0070E544


Hasta aqui medio lei... No entendi nada, pero puedo decir que:
P15 es el primer grupo del número de serie

Después el segundo grupo sería,
- El primer caracter se evalue en la linea #17 que tiene que ser 41 en HEX es A
- El segundo caracter se evalue en la linea #20 que tiene que ser 5A en HEX es Z

Voy bien?
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

tincopasan

#1
disculpa, pero si estás empezando o te cuesta hallar seriales, ¿porqué no parchar la aplicación? es más fácil y rápido, obvio que con tiempo podrás encontrar los seriales, pero también es una forma de empezar, no tengo tiempo para mirar todo el código, pero lo que viste solo compara que esten en el rango de mayúsculas, y más adelante te da el serial, parche unas partes, para que tome cualquier serial, capturé la clave correcta y listo!!!




sino sale la imagen pido perdón, nunca aprendí como se suben!
si querés avisame por privado y te envío el archivo parchado y te digo donde mirar, son como máximo 2 minutos.

apuromafo CLS

normalmente cuando hacen comparaciones es para filtrar, en este caso aún sin mirar el exe diría que pide que los carácteres sean de la A a la Z

por otro  lado, si no tienes experiencia depurando, lo mejor es siempre tener un pequeño manual de assembler para orientarte con las instrucciones o bien ver la instancia en que aún sin esa clave funcione operativamente


creo que como dice ticopasan, aveces hay seriales que son fisheables, entonces basta emular toda la rutina desde la generación hasta donde aparece el serial para entenderlas...

por otro lado una vez encontré un keygenme que tenia 100 soluciones posibles, otros que segun la terminación es la cantidad de licencia, y asi suma y sigue , en lo factible te sugiero lo dicho por tincopasan

un saludo a la distancia
Apuromafo