Leer este code sacado de ollydbg

Iniciado por Shell Root, 28 Noviembre 2013, 19:47 PM

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

Shell Root


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?
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

ivancea96


karmany

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

ivancea96

Si estás con OllyDBG, podrás hacer un BreackPoint. Entonces, mirar en la memoria, que valores hay.

Shell Root

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"?
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

MCKSys Argentina

#5
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?)
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


karmany

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.

Shell Root

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
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

MCKSys Argentina

989898 en decimal en F1ACA (fiaca :P) en hexa...

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

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Shell Root

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"
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.