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
mantap tu gan bru thu ane gan cra krja gitu :D
ReplyDeletehttp://ariharyadiadi.blogspot.com
Sipp..:) selamat mencoba...good luck
DeleteResikonya juga lumayan "Salah sedikit dalam melakukan Hooking dapat berakibat sistem pada aplikasi atau sistem operasi menjadi tidak stabil hingga mengalami crash".Makasih infonya sob.
ReplyDeleteok sob...sama-sama
Deleteini VB atau delphi gan?
ReplyDeletedi atas di jelaskan kodingnya di ketik dan dijalankan pada notepad
ReplyDelete