elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Duda con ollydbg y asm
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con ollydbg y asm  (Leído 2,063 veces)
shiro51

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Duda con ollydbg y asm
« en: 20 Septiembre 2013, 05:50 am »

Hace poco que me he metido a fondo con ollydbg lo vi hace tiempo pero no me meti de lleno, y pues ahora me meti de lleno para hookear desde asm, ya que es el lenguaje que mas me gusta, pero he tenido unas dudas que no consigo solucionar incluso buscando :S a ver si me podéis ayudar...

Aqui os dejo el codigo, lo compilo desde fasm, y debajo de el os dejo las dudas por si alguien me puede echar un cable

Código:
format PE GUI 4.0
entry main

include '..\..\INCLUDE\win32ax.inc'

section '.idata' import data readable

        library kernel32,'KERNEL32.DLL',\
                user32,'USER32.DLL'

        import kernel32,\
               ExitProcess,'ExitProcess',\
               AllocConsole, 'AllocConsole',\
               GetStdHandle,'GetStdHandle',\
               WriteConsole, 'WriteConsoleA',\
               GetModuleHandle,'GetModuleHandleA',\
               GetProcAddress, 'GetProcAddress',\
               WriteProcessMemory, 'WriteProcessMemory',\
               GetCurrentProcess, 'GetCurrentProcess'

        import user32,\
               MessageBox,'MessageBoxA',\
               LoadIcon, 'LoadIconA',\
               LoadCursor, 'LoadCursorA',\
               DefWindowProc, 'DefWindowProcA',\
               RegisterClass, 'RegisterClassA',\
               CreateWindowEx, 'CreateWindowExA' ,\
               PostQuitMessage, 'PostQuitMessage',\
               GetMessage, 'GetMessageA',\
               TranslateMessage, 'TranslateMessage',\
               DispatchMessage, 'DispatchMessageA'

section '.data' data readable writable

        Adrr DD 0

        Jump DB 0xe9
             DD 0x65467689
             DB 0xc3

section '.text' code readable executable

main:
        invoke  GetModuleHandle, 'user32.dll'
        invoke  GetProcAddress, eax, 'MessageBoxA'
        mov [Adrr], eax
        invoke GetCurrentProcess
        invoke WriteProcessMemory, eax, [Adrr], Jump, 6, 0
        nop
        nop
        invoke  MessageBox, 0, 'Texto', 'Titulo', MB_OK
        nop
        invoke  ExitProcess, 0

        Hook:
        invoke AllocConsole
        invoke GetStdHandle, STD_OUTPUT_HANDLE

        invoke WriteConsole, eax, "Hola", 4, 0, 0
        retn

Las dudas que tengo son las siguientes:

 1:
        Jump DB 0xe9
                 DD 0x65467689
                 DB 0xc3

en esta parte no se podria hacer algo como:

        Jump DB 0xe9
                DD Hook
                DB 0xc3

Ya que tengo este "cartel" o no se como llamarlo

        Hook:
        invoke AllocConsole

Luego compilo y manualmente busco en el ollydbg la posicion de esta sección (hook) y la pongo en su variable correspondiente (jump)

para que termine:
e9(jmp) ?? ?? ?? ?? c3(retn)

Pero por ejemplo si la posicion de la sección hook es:
0040307B y la meto de la manera anterior

       Jump DB 0xe9
                DD 0x0040307B
                DB 0xc3

al usar invoke WriteProcessMemory, eax, [Adrr], Jump, 6, 0

me lo deja asi:
http://i39.tinypic.com/160pv7a.png

y si la pongo asi:

       Jump DB 0xe9
                DB 0x00
                DB 0x40
                DB 0x30
                DB 0x7B
                DB 0xc3

termina asi:
http://i44.tinypic.com/1gm5jm.png

Y yo ya no entiendo que narices es una columna o la otra... se suponia que era hex... pero ahora ya estoy hecho un lio AARG

A ver si me podeis ayudar gracias de antemano...
« Última modificación: 20 Septiembre 2013, 06:01 am por shiro51 » En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.471


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Duda con ollydbg y asm
« Respuesta #1 en: 20 Septiembre 2013, 17:21 pm »

Debes releer un poco el tema de las instrucciones ASM.

Los JMPs son relativos a la posición donde están ubicados.

La solucion sencilla para evitar ese problema es usar PUSH + RET, pero esto ocupa un byte mas.

Por ej.:
Código
  1. 00412C32    E9 87000000 JMP 00412CBE

podrías reemplazarlo con:

Código
  1. 00412C32    68 BE2C4100 PUSH 00412CBE
  2. 00412C37    C3          RET
  3.  

pero, como ves, ocupa 1 byte más.

Si quieres usar un JMP, tendrás que calcular la distancia del salto antes de escribirlo.

Saludos!
En línea

MCKSys Argentina

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

shiro51

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Duda con ollydbg y asm
« Respuesta #2 en: 20 Septiembre 2013, 19:32 pm »

Vale entiendo, ya lo probé y genial, funciona perfecto solo me quedaría limpiar la pila y poco más para que estuviera correcto el código ya que supongo que no si uso pop después del invoke messagebox[...] se quedaran los parámetros dentro.

No me acordaba que 'jmp' era relativo, hace bastante que no toco asm.

¿Es recomendable usar jmp calculando la distancia? o ¿es mejor usar push y ret ya que te ahorras todo eso?. Iré a mirar si encuentro como calcular la distancia relativa, ya que el otro día lo leí y ponían 'punterofuncion-inicioapi-5' y no entendí porque de esa manera...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda Ollydbg « 1 2 »
Ingeniería Inversa
pintuflas 11 7,409 Último mensaje 29 Mayo 2008, 14:27 pm
por byebye
Windows 7 duda con ollydbg en RPC y SMB
Bugs y Exploits
RocKHounD 7 4,524 Último mensaje 14 Febrero 2011, 17:39 pm
por RocKHounD
Duda con OllyDbg 2.01
Ingeniería Inversa
avesudra 5 4,674 Último mensaje 3 Junio 2012, 17:08 pm
por avesudra
Duda OllyDbg Narvaja
Ingeniería Inversa
lubo 7 4,360 Último mensaje 30 Octubre 2013, 22:51 pm
por MCKSys Argentina
Duda sorbe Ollydbg y .dll
Ingeniería Inversa
GaspiN 6 2,916 Último mensaje 1 Febrero 2015, 19:42 pm
por GaspiN
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines