จาก part I และ II ตอนนี้ก็ดำเนินมาถึง part III
โดย part ที่ผ่านมานั้น เราทำการ DLL Injection โดยใช้การ CreateRemoteThread ไปยัง Process เป้าหมายเป็นหลัก
แต่มา part III เราจะเพิ่มส่วนของการ Hook เพื่อทำการดัก Windows Message โดยใช้ Windows Hooks
โดยหลักการคือ Hook Server (process) จะทำการเรียก Hook Driver (dll) จากนั้น Hook Driver จะทำการเรียกใช้ function SetWindowsHookEx เพื่อทำการดักจับ WindowsMessage ให้ไปทำงานฟังก์ชันที่เราต้องการ

[hide=10]
Code ของ Hook Server ที่จะทำการ โหลด DLL จากนั้นทำการเรียก function ใน DLL เพื่อทำการเรียก SetWindowsHookEx
Code:
typedef BOOL (*PFN_SETMYHOOK)(HWND);
const LPSTR DLL_FUNCTION_NAME = "setMyHook";
HMODULE hmLoadLibrary = LoadLibrary("HookDriver.dll");
if(hmLoadLibrary == NULL) return FALSE;
PFN_SETMYHOOK pfnSetMyHook = (PFN_SETMYHOOK)GetProcAddress(hmLoadLibrary, DLL_FUNCTION_NAME);
if(pfnSetMyHook == NULL) return FALSE;
pfnSetMyHook(hwndDlg);
ส่วนนี่เป็น Code ส่วนของ Hook Driver (DLL)
[code]
#define pCW ((MSG*)lParam)
LRESULT CALLBACK GetMsgProc(UINT nCode, WPARAM wParam, LPARAM lParam)
{