1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| .386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
includelib kernel32.lib
includelib user32.lib
include \masm32\macros\macros.asm
.data?
OldProtection dd ?
.data
Text1 db " Hello Test1",0
Text2 db " Hello Test2",0
Text3 db " Hello Test3",0
Caption db " API Hooking ",0
ModifiedT db " hhhhhhhhhhhhhh :p ",0
.code
ExecuteHook proc hWnd:DWORD, IpText:DWORD, IpCaption:DWORD, Ttype:DWORD
invoke MessageBox,0,addr ModifiedT,0,MB_OKCANCEL
ret
ExecuteHook endp
SetHook proc hookProc :DWORD, Traject:DWORD
mov ebx,Traject
invoke VirtualProtect,ebx,5,PAGE_EXECUTE_READWRITE,addr OldProtection
mov ecx,hookProc
add ebx,5
sub ecx,ebx
mov byte ptr [ebx],0E9h
mov [ebx+1],ecx
ret
SetHook endp
start:
LoadProcAddress "user32.dll","MessageBoxA"
test eax,eax
je error
invoke SetHook,ExecuteHook,eax
invoke MessageBox,0,addr Text1,addr Caption,MB_OK
invoke MessageBox,0,addr Text2,addr Caption,MB_OK
invoke MessageBox,0,addr Text3,addr Caption,MB_OK
error:
invoke ExitProcess,0
End start |
Partager