Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: Shell Root en 11 Junio 2015, 06:26 am



Título: Como empezar a leer y analisar valores del Ollydb
Publicado por: Shell Root en 11 Junio 2015, 06:26 am
Bueno siguiendo con el tema del crack para esta aplicación https://dl.dropboxusercontent.com/u/71932290/demo.exe (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 (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

(http://i.elhacker.net/i?i=TSIc7HeGB1ej2q8xyh5o1WVo) (http://i.elhacker.net/d?i=TSIc7HeGB1ej2q8xyh5o1WVo)

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
  1. 0070E50E   . 8D85 FCFEFFFF  LEA EAX,DWORD PTR SS:[EBP-104] ; Recoge el valor de la dirección DWORD en EAX
  2.                                                           ; EAX en este momento vale EAX=0000000D
  3. 0070E514   . E8 FB46CFFF    CALL erstatto.00402C14         ; LLama la dirección 00402C14 que si busco más arriba es un PUSH a EDX
  4. 0070E519   . 85C0           TEST EAX,EAX                   ; No se que es pero lo vi con la flag Z cuando intente sacar el IsDebuggerPresent
  5. 0070E51B   . 75 07          JNZ SHORT erstatto.0070E524
  6. 0070E51D   . C745 FC 010000>MOV DWORD PTR SS:[EBP-4],1     ; No se que es pero sale Stack SS:[0012EB20]=00000000
  7. 0070E524   > BA 05000000    MOV EDX,5                      ; Mueve 5 a EDX ; EDX=00802079 (erstatto.00802079), ASCII "P15"
  8.  
  9. ; Aquí creo que empieza a evaluar el segundo grupo del número de serie
  10.  
  11. 0070E529   . 8D85 FDFDFFFF  LEA EAX,DWORD PTR SS:[EBP-203] ; Stack address=0012E921, (ASCII "12345")
  12.                                                           ; EAX=00000000
  13. 0070E52F   > 8A08           MOV CL,BYTE PTR DS:[EAX]       ; EAX es 12345
  14.                                                           ; Stack DS:[0012E921]=31 ('1')
  15.                                                           ; CL=00
  16.                                                           ; Jump from 0070E544
  17. 0070E531   . 80F9 41        CMP CL,41 ; CMP Es un condicional y evalua que CL sea 41 pero en este caso es
  18.                                                           ; CL=31 ('1')
  19. 0070E534   . 72 05          JB SHORT erstatto.0070E53B
  20. 0070E536   . 80F9 5A        CMP CL,5A
  21. 0070E539   . 76 07          JBE SHORT erstatto.0070E542
  22. 0070E53B   > C745 FC 010000>MOV DWORD PTR SS:[EBP-4],1     ; Stack SS:[0012EB20]=00000001
  23.                                                           ; Jump from 0070E534
  24. 0070E542   > 40             INC EAX ; Incrementa EAX
  25.                                                           ; EAX=0012E921, (ASCII "12345")
  26.                                                           ; Jump from 0070E539
  27. 0070E543   . 4A             DEC EDX ; Decrementa EDX
  28.                                                           ; EDX=00000005
  29. 0070E529   . 8D85 FDFDFFFF  LEA EAX,DWORD PTR SS:[EBP-203]
  30. 0070E52F   > 8A08           MOV CL,BYTE PTR DS:[EAX]
  31.                                                           ; Stack DS:[0012E922]=32 ('2')
  32.                                                           ; CL=31 ('1')
  33.                                                           ; 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?


Título: Re: Como empezar a leer y analisar valores del Ollydb
Publicado por: tincopasan en 11 Junio 2015, 08:57 am
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!!!
(http://<a href="http://i.elhacker.net/d?i=kTG3rm83-1llWVFcbdYQsmVo"><img src="http://i.elhacker.net/t?i=kTG3rm83-1llWVFcbdYQsmVo"/></a>)

(http://i.elhacker.net/d?i=kTG3rm83-1llWVFcbdYQsmVo)

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.


Título: Re: Como empezar a leer y analisar valores del Ollydb
Publicado por: apuromafo CLS en 11 Junio 2015, 19:42 pm
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