Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: negux en 9 Enero 2012, 15:30 pm



Título: Ayuda con un crackme
Publicado por: negux en 9 Enero 2012, 15:30 pm
Que tal, recien estoy terminando el curso de Ricardo y me dispuse a hacer un crackme, bueno, les cuento, el crackme estaba empacado con exe stealth, y con ayuda de google pude desempacarlo :P y Bueno tengo esta parte de lo que muestra el olly, donde lee lo que pongo como serial, y salta al mensaje de Error.
Código
  1. 00401099   .  E8 E8000000     CALL <JMP.&user32.GetDlgItemTextA>       ; \GetDlgItemTextA
  2. 0040109E   .  83F8 0C            CMP EAX,0C
  3. 004010A1   .  75 16                JNZ SHORT F7Crackm.004010B9
  4. 004010A3   .  8D35 00304000 LEA ESI,DWORD PTR DS:[403000]
  5. 004010A9   .  0FB646 FF         MOVZX EAX,BYTE PTR DS:[ESI-1]
  6. 004010AD   .  3806                CMP BYTE PTR DS:[ESI],AL
  7. 004010AF   .  75 08                JNZ SHORT F7Crackm.004010B9
  8. 004010B1   .  60                    PUSHAD
  9. 004010B2   .  E8 77FFFFFF      CALL F7Crackm.0040102E
  10. 004010B7   .  EB 51               JMP SHORT F7Crackm.0040110A
  11. 004010B9   >  68 00304000    PUSH F7Crackm.00403000                   ; /Arg1 = 00403000 ASCII "555555555555"
  12. 004010BE   .  E8 6C000000    CALL F7Crackm.0040112F                     ; \F7Crackm.0040112F
  13. 004010C3   .  6A 00               PUSH 0                                               ; /Style = MB_OK|MB_APPLMODAL
  14. 004010C5   .  68 24324000     PUSH F7Crackm.00403224                   ; |Title = "Error"
  15. 004010CA   .  68 19314000     PUSH F7Crackm.00403119                   ; |Text = ""
  16. 004010CF   .  6A 00               PUSH 0                                               ; |hOwner = NULL
  17. 004010D1   .  E8 B6000000    CALL <JMP.&user32.MessageBoxA>       ; \MessageBoxA
  18.  
  19. ahi compara Eax con 0c, que es la longitud del serial, si no es igual salta al mensage de error, en este caso no salta (digite doce veces, "5"), luego vemos que mueve a ESI el serial
  20. que ingrese, y aqui viene el problema, no le entiendo muy muy bien a la siguiente instruccion: MOVZX EAX,BYTE PTR DS:[ESI-1], segun yo: mueve a eax un byte del contenido de
  21. DS en la direccion de memoria [ESI-1], olly marca DS:[00402FF]=00, y el movzx lo rellena con ceros.
  22. y de ahi compara un byte de mi serial con AL:
  23. AL=00
  24. DS:[00403000]=35 ('5')
  25. y dependiendo del resultado de esa comparacion salta al cartel malo o bueno.
  26.  
  27. Codigo de Mensaje bueno:
  28.  
  29. 0040102E  /$  6A 00             PUSH 0                                                ; /Style = MB_OK|MB_APPLMODAL
  30. 00401030  |.  68 1C324000   PUSH F7Crackm.0040321C                   ; |Title = "Mensaje"
  31. 00401035  |.  68 18324000   PUSH F7Crackm.00403218                    ; |Text = "Ok"
  32. 0040103A  |.  6A 00             PUSH 0                                               ;  |hOwner = NULL
  33. 0040103C  |.  E8 4B010000  CALL <JMP.&user32.MessageBoxA>       ;  \MessageBoxA
  34.  

Y pues bueno, hasta aqui llegue, no se que serial compara para saltar al mensaje bueno, busque las api que utiliza y no hay alguna que compare, la unica comparacion que me lleva al mensaje bueno es esa con AL
 alguna sugerencia/ayuda ??

Gracias

Edito.

Al introducir 20 caracteres (16, "5" y 4, "9");

llego a este call:

004010BE   .  E8 6C000000   CALL F7Crackm.0040112F                   ; \F7Crackm.0040112F

y me sale un mensaje de Error:

Don´t know how to step because memory at address 399393939 is not readable, try to change EIP or pass exception to program

Analizando eso en el Dump veo esto:

00403000  35 35 35 35 35 35 35 35  55555555
00403008  35 35 35 35 35 35 35 35  55555555
00403010  39 39 39 39 00 00 00 00  9999....

Supongo, no se, que como que trata de ejecutar esa direcion de memoria -> 399393939 que son los 9999 que escribi, eso un el overflow? y de ahi como le sigo  :huh: :rolleyes:


Título: Re: Ayuda con un crackme
Publicado por: .:UND3R:. en 9 Enero 2012, 16:35 pm
Sube el crackme para ver que se puede hacer, Saludos