Test Foro de elhacker.net SMF 2.1

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

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
Cita de: @shellroot en 28 Noviembre 2013, 19:47 PM

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 (asm,5,7,8,9) [Seleccionar]
00401050  |. 6A 14          PUSH 14                                  ; /Count = 14 (20.)
00401052  |. 68 0C304000    PUSH Leccion_.0040300C                   ; |Buffer = Leccion_.0040300C
00401057  |. 68 EA030000    PUSH 3EA                                 ; |ControlID = 3EA (1002.)
0040105C  |. FF75 08        PUSH DWORD PTR SS:[EBP+8]                ; |hWnd
0040105F  |. E8 8A000000    CALL <JMP.&user32.GetDlgItemTextA>       ; \GetDlgItemTextA

00401064  |. 8B1D 0C304000  MOV EBX,DWORD PTR DS:[40300C]
0040106A  |. 8B15 4B204000  MOV EDX,DWORD PTR DS:[40204B]
00401070  |. 3BDA           CMP EBX,EDX

00401072  |. 74 13          JE SHORT Leccion_.00401087
00401074  |. 6A 00          PUSH 0                                   ; /Style = MB_OK|MB_APPLMODAL
00401076  |. 6A 00          PUSH 0                                   ; |Title = NULL
00401078  |. 68 35204000    PUSH Leccion_.00402035                   ; |Text = "Mal Muy MAL"
0040107D  |. FF75 08        PUSH DWORD PTR SS:[EBP+8]                ; |hOwner
00401080  |. E8 6F000000    CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA

00401085  |. EB 14          JMP SHORT Leccion_.0040109B
00401087  |> 6A 00          PUSH 0                                   ; /Style = MB_OK|MB_APPLMODAL
00401089  |. 68 41204000    PUSH Leccion_.00402041                   ; |Title = "Bravo¡¡¡¡"
0040108E  |. 68 28204000    PUSH Leccion_.00402028                   ; |Text = "Muy BIEN¡¡¡¡"
00401093  |. FF75 08        PUSH DWORD PTR SS:[EBP+8]                ; |hOwner
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 (asm) [Seleccionar]
DS:[0040300C]=00000000 ; Esté sería el serial que ingreso
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].

CitarLo 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!  :-*

Cita de: MCKSys Argentina en 28 Noviembre 2013, 20:35 PM(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 (asm) [Seleccionar]
00401061  |. BA 08304000    MOV EDX,Leccion_.00403008                ;  ASCII "FIACA"