Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: Shell Root en 28 Noviembre 2013, 19:47 pm



Título: Leer este code sacado de ollydbg
Publicado por: Shell Root en 28 Noviembre 2013, 19:47 pm
Código:
1   0040105F  |. E8 8A000000    CALL <JMP.&user32.GetDlgItemTextA>       ; \GetDlgItemTextA
2   00401064  |. 8B1D 0C304000  MOV EBX,DWORD PTR DS:[40300C]
3   0040106A  |. 8B15 4B204000  MOV EDX,DWORD PTR DS:[40204B]
4   00401070  |. 3BDA           CMP EBX,EDX

Entiendo qué!
Linea #1 Es donde se ingresa el valor, en input.
Linea #2 Transfiere el dato DWORD PTR DS:[40300C] en EBX
Linea #3 Transfiere el dato DWORD PTR DS:[40204B] en EDX
Linea #4 Compara EBX con EDX.

Lo que quiero saber, es DWORD PTR DS:[40300C] y DWORD PTR DS:[40204B] que resultado tiene?


Título: Re: Leer este code sacado de ollydbg
Publicado por: ivancea96 en 28 Noviembre 2013, 19:55 pm
Es así, no?


Título: Re: Leer este code sacado de ollydbg
Publicado por: karmany en 28 Noviembre 2013, 20:12 pm
Código:
1   0040105F  |. E8 8A000000    CALL <JMP.&user32.GetDlgItemTextA>       ; \GetDlgItemTextA
2   00401064  |. 8B1D 0C304000  MOV EBX,DWORD PTR DS:[40300C]
3   0040106A  |. 8B15 4B204000  MOV EDX,DWORD PTR DS:[40204B]
4   00401070  |. 3BDA           CMP EBX,EDX

Entiendo qué!
Linea #1 Es donde se ingresa el valor, en input.
Linea #2 Transfiere el dato DWORD PTR DS:[40300C] en EBX
Linea #3 Transfiere el dato DWORD PTR DS:[40204B] en EDX
Linea #4 Compara EBX con EDX.

Lo que quiero saber, es DWORD PTR DS:[40300C] y DWORD PTR DS:[40204B] que resultado tiene?

No sé lo que quieres hacer pero si estás intentando ver el resultado de GetDlgItemTex no lo haces bien.

Mira, la API GetDlgItemText recupera el texto o título de un control y requiere 4 parámetros: GetDlgItemText(handle del diálogo que contiene el control, identificador del control, espacio -búfer- que tú quieres reservar para recuperar el texto, el tamaño máximo de ese texto);

Si quieres analizar una API tienes que analizar los 4 parámetros anteriores, para ver dónde es guardado.

Lo que tú dices es correcto excepto eso de Linea #1 Es donde se ingresa el valor, en input. que no sé qué quieres decir. Si quieres que te respondamos deberás poner más código anterior para ver qué hay en 40300c y 40204b.

Saludos


Título: Re: Leer este code sacado de ollydbg
Publicado por: ivancea96 en 28 Noviembre 2013, 20:15 pm
Si estás con OllyDBG, podrás hacer un BreackPoint. Entonces, mirar en la memoria, que valores hay.


Título: Re: Leer este code sacado de ollydbg
Publicado por: Shell Root en 28 Noviembre 2013, 20:30 pm
Explico un poco mejor... Tengo un crackme que resolvi sólo viendo como se comportaba por dentro -tanteo y error-.

Código
  1. 00401050  |. 6A 14          PUSH 14                                  ; /Count = 14 (20.)
  2. 00401052  |. 68 0C304000    PUSH Leccion_.0040300C                   ; |Buffer = Leccion_.0040300C
  3. 00401057  |. 68 EA030000    PUSH 3EA                                 ; |ControlID = 3EA (1002.)
  4. 0040105C  |. FF75 08        PUSH DWORD PTR SS:[EBP+8]                ; |hWnd
  5. 0040105F  |. E8 8A000000    CALL <JMP.&user32.GetDlgItemTextA>       ; \GetDlgItemTextA
  6.  
  7. 00401064  |. 8B1D 0C304000  MOV EBX,DWORD PTR DS:[40300C]
  8. 0040106A  |. 8B15 4B204000  MOV EDX,DWORD PTR DS:[40204B]
  9. 00401070  |. 3BDA           CMP EBX,EDX
  10.  
  11. 00401072  |. 74 13          JE SHORT Leccion_.00401087
  12. 00401074  |. 6A 00          PUSH 0                                   ; /Style = MB_OK|MB_APPLMODAL
  13. 00401076  |. 6A 00          PUSH 0                                   ; |Title = NULL
  14. 00401078  |. 68 35204000    PUSH Leccion_.00402035                   ; |Text = "Mal Muy MAL"
  15. 0040107D  |. FF75 08        PUSH DWORD PTR SS:[EBP+8]                ; |hOwner
  16. 00401080  |. E8 6F000000    CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
  17.  
  18. 00401085  |. EB 14          JMP SHORT Leccion_.0040109B
  19. 00401087  |> 6A 00          PUSH 0                                   ; /Style = MB_OK|MB_APPLMODAL
  20. 00401089  |. 68 41204000    PUSH Leccion_.00402041                   ; |Title = "Bravo¡¡¡¡"
  21. 0040108E  |. 68 28204000    PUSH Leccion_.00402028                   ; |Text = "Muy BIEN¡¡¡¡"
  22. 00401093  |. FF75 08        PUSH DWORD PTR SS:[EBP+8]                ; |hOwner
  23. 00401096  |. E8 59000000    CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA

La Linea #9 es el condicional que decidirá a donde apunta. Me moví hasta la dirección 00401064 y 0040106A, en donde en tiempo de ejecución me muestra:
Código
  1. DS:[0040300C]=00000000 ; Esté sería el serial que ingreso
  2. DS:[0040204B]=38393839 ; Esté sería el serial correcto!

Lo que no logro entender es, -ya se que contenido tiene :p-, si realmente cuando ingreso 1 se convierte en 31, donde puedo ver que se hace esa "conversión"?


Título: Re: Leer este code sacado de ollydbg
Publicado por: MCKSys Argentina en 28 Noviembre 2013, 20:35 pm
El char "1" tiene el valor ascii 0x31. Cuando escribes un "1" en memoria, lo que escribe es el valor 31 (en hexa).

La conversion esta implicita...  :P

Saludos!

EDIT:

Cuando comparas con 38393839, estas comparando con el string "9898" (imagino que conoces el "famoso" valor 989898... no?)


Título: Re: Leer este code sacado de ollydbg
Publicado por: karmany en 28 Noviembre 2013, 20:38 pm
Es muy sencillo, GetDlgItemText obtiene el serial que tú has puesto en el textbox y lo deja en 40300C.

Ese serial se compara con el que hay en [40204B].

Citar
Lo que no logro entender es, -ya se que contenido tiene :p-, si realmente cuando ingreso 1 se convierte en 31, donde puedo ver que se hace esa "conversión"?
Pulsa con el botón derecho del ratón en
MOV EBX,DWORD PTR DS:[40300C]
y selecciona Follow in dump > Memory address
verás abajo en la ventana de dump esos 313131..

Haz lo mismo con MOV EDX,DWORD PTR DS:[40204B] para ver con qué se compara.

Es eso lo que quieres? como bien dice MCKSys Argentina el texto 1 se convierte en 31hex en memoria.


Título: Re: Leer este code sacado de ollydbg
Publicado por: Shell Root en 28 Noviembre 2013, 20:43 pm
Oka entiendo correctamente!  :-*

(imagino que conoces el "famoso" valor 989898... no?)
Maldición no lo capto!

Siempre me ha interesado leer todos los post de MCKSys y de karmany, aunque no los entienda, por ahora... ajjaja :p


Título: Re: Leer este code sacado de ollydbg
Publicado por: MCKSys Argentina en 28 Noviembre 2013, 20:49 pm
989898 en decimal en F1ACA (fiaca :P) en hexa...

Es el valor "de testeo" usado por Ricardo Narvaja en su introduccion a Olly...  ;)

Saludos!


Título: Re: Leer este code sacado de ollydbg
Publicado por: Shell Root en 28 Noviembre 2013, 21:06 pm
Ahh si apenas lo lei hoy, ajja lo vi dentro del crackme LECCION 13 HARDCODED 1
Código
  1. 00401061  |. BA 08304000    MOV EDX,Leccion_.00403008                ;  ASCII "FIACA"