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
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...
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 [Seleccionar]
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...