Contoh Implementasi Hooking
Untuk penjelasan tentang Hooking, baca di artikel sebelumnya tentang
"Manipulasi Sistem Komputer Teknik Hooking"
Berikut Ini merupakan salah satu Contoh Implementasi Hooking yang bertujuan untuk mencegah window "dihancurkan" atau ditutup pada notepad.
Yang dibutuhkan adalah DLL yang berisi kode untuk menangkap pesan untuk "menghancurkan" window pada notepad.
Berikut Codenya:
usesWindows,Messages,sysutils;typeTHookRec = recordhTMHook : HHOOK;hTMWnd : KWND;oldProc : Integer;end;varmap : DWord;buf : ^THookRec;funcion PROC(nCode: Integer; wp: wParam; lp: lParam) : LongInt; stdcall;beginif (nCode >= HC_ACTION) thenif (nCode = HCBT_DESTROYWND) thenbeginResult : =1;exit;end;Result : = CallNextHookEx(buf^.hTMHook, nCode, wp, lp);end;// sets up hookfunction SetHook: Boolean; stdcall; export;varstartwnd: HWND;begintryResult : false;if (not assigned (buf)) thenbeginmap := CreateFileMapping(DWord(-1), nil, PAGE_READWRITE, 0, SizeOf(THookRec), 'Hook');buf := MapViewOfFile(map, FILE_MAP_ALL_ACCESS, 0, 0, 0);startwnd := FindWindow('Untiled - Notepad', nil);buf^.hTMWnd := startwnd;buf^.hTMHook := SetWindowsHookEx(WH_CBT, @PROC, hInstance, GetWindowThreadProcessId(startwnd, nil));result := true;end;exceptresult := false;MessageBox(0, 'error in SetHook','error', MB_OK);end;//removes hookfunction RemoveHook: Bolean; stdcall; export;beginresult := false;if (assigned(buf)) thenbeginif (buf^.hTMHook <> 0) thenUnhookWindowsHookEx(buf^.hTMHook);buf^.hTMHook := 0;UnmapViewOfFile(buf);buf := nil;result := true;end;end;//DLL entry pointprocedure DllEntry(dwReason: DWord);beginCase dwReason ofDLL_PROCESS_ATTACK:beginif (not assigned(buf)) thenbeginmap := OpenFileMapping(FILE_MAP_ALL_ACCESS, false, 'Hook');buf := MapViewOfFile(map, FILE_MAP_ALL_ACCESS, 0, 0, 0);closeHandle(map);map := 0;end;end;DLL_PROCESS_DETACH:beginUnmapViewOfFile(buf);buf := nil;end;end;end;exportsSetHook,RemoveHook;//mainbeginDisableThreadLibraryCalls(hInstance);DllProc := @DllEntry;DllEntry(DLL_PROCESS_ATTACK):end.simpan file tersebut ke dalam file DLL. misalnya "project2.dll"Kemudian, buatlah program untuk memanggil fungsi yang terdapat pada DLL.CODENYA:procedure SetHook; external 'project2.dll';procedure RemoveHook; external 'project2.dll';implementation{$R * dfm}procedure TForm1.Button1Click(Sender: TObject);beginSetHook;end;Procedure TForm1.Button2Click(Sender: TObject);beginRemoveHook;end;end.
Selesai, Jalankan Notepad dan Klik tombol pertama. Kemudian, klik Exit(X) atau melalui menu File -> Exit untuk menutup Notepad. Hasilnya??? Notepad tidakan akan dapat ditutup.
Kesimpulan:
Bermain-main dengan Hooking Bukanlah hal yang mudah untuk diterapkan. Salah sedikit dalam melakukan Hooking dapat berakibat sistem pada aplikasi atau sistem operasi menjadi tidak stabil hingga mengalami crash. Namun, hooking dapat bermanfaat dalam pengembangan software hingga menjadi keamanan sistem.
Baca Juga
"Manipilasi Sistem Komputer Teknik Hooking"
MICROSOFT
CODEPROJECT
WIKIMEDIA
Semoga bermanfaat
mozalora
Update Contact :
No Wa/Telepon (puat) : 085267792168
No Wa/Telepon (fajar) : 085369237896
Email : Fajarudinsidik@gmail.com
No Wa/Telepon (puat) : 085267792168
No Wa/Telepon (fajar) : 085369237896
Email: Fajarudinsidik@gmail.com
atau Kirimkan Private messanger melalui email dengan klik tombol order dibawah ini :