DLL命令表
.版本 2.DLL命令 RtlMoveMemory, 整數型, "kernel32.dll", "RtlMoveMemory" .參數 Destination, 整數型 .參數 Source, 整數型 .參數 Length, 整數型.DLL命令 CreateWindowExA, 整數型 .參數 dwExStyle, 整數型 .參數 lpClassName, 文本型 .參數 lpWindowName, 文本型 .參數 dwStyle, 整數型 .參數 x, 整數型 .參數 y, 整數型 .參數 nWidth, 整數型 .參數 nHeight, 整數型 .參數 hWndParent, 整數型 .參數 hMenu, 整數型 .參數 hInstance, 整數型 .參數 lpParam, 整數型.DLL命令 VirtualProtect, 邏輯型 .參數 lpAddress, 整數型 .參數 dwSize, 整數型 .參數 flNewProtect, 整數型 .參數 lpflOldProtect, 整數型, 傳址.DLL命令 SetWindowLongA, 整數型, , "SetWindowLongA" .參數 hWnd, 整數型 .參數 nIndex, 整數型 .參數 dwNewLong, 整數型.DLL命令 CallWindowProcA, 整數型, , "CallWindowProcA" .參數 lpPrevWndFunc, 整數型 .參數 hWnd, 整數型 .參數 Msg, 整數型 .參數 wParam, 整數型 .參數 lParam, 整數型.DLL命令 GetProcAddress, 整數型 .參數 hModule, 整數型 .參數 lpProcName, 文本型.DLL命令 GetModuleHandleA, 整數型 .參數 lpModuleName, 文本型.DLL命令 MessageBoxA, 整數型, "user32.dll", "MessageBoxA", 公開, 顯示和操作一個消息框。該消息框包含一個應用程序定義的消息和標題,加上預定義的圖標和按鈕的任意組合。 wLanguageId參數指定為預定義的按鈕使用的語言資源集。 .參數 hwnd, 整數型, , 要創建的消息框的所有者窗口的句柄。如果這個參數為NULL,則消息框沒有所有者窗口 .參數 lpText, 文本型 .參數 lpCaption, 文本型 .參數 wtype, 整數型.DLL命令 SetWindowsHookExA, 整數型, "User32.dll", "SetWindowsHookExA", 公開, HHOOK WINAPI SetWindowsHookEx .參數 idHook, , , _In_ int idHook, .參數 lpfn, , , _In_ HOOKPROC lpfn, .參數 hMod, , , _In_ HINSTANCE hMod, .參數 dwThreadId, , , _In_ DWORD dwThreadId.DLL命令 GetCurrentThreadId, 整數型, "kernel32.dll", "GetCurrentThreadId", 公開, 取當前線程ID.DLL命令 CallNextHookEx, 整數型, "User32.dll", "CallNextHookEx", 公開, LRESULT WINAPI CallNextHookEx .參數 hhk, 整數型, , _In_opt_ HHOOK hhk, .參數 nCode, 整數型, , _In_ int nCode, .參數 wParam, 整數型, , _In_ WPARAM wParam, .參數 lParam, 整數型, , _In_ LPARAM lParam.DLL命令 GetForegroundWindow, 整數型, "User32.dll", "GetForegroundWindow", 公開, HWND WINAPI GetForegroundWindow.DLL命令 UnhookWindowsHookEx, 邏輯型, "User32.dll", "UnhookWindowsHookEx", 公開, BOOL WINAPI UnhookWindowsHookEx .參數 hhk, , , _In_ HHOOK hhk
常量數據表
.版本 2.常量 GWL_WNDPROC, "-4".常量 PAGE_EXECUTE_READWRITE, "64".常量 WM_NOTIFY, "78".常量 WH_CBT, "5".常量 HCBT_ACTIVATE, "5"
全局變量表
.版本 2.全局變量 APIHook, APIHOOK類
APIHOOK獲取信息框內容
.版本 2.程序集 APIHOOK類.程序集變量 pFunAddress, 整數型.程序集變量 OldProtect, 整數型.程序集變量 NewData, 字節集.程序集變量 OldData, 字節集.程序集變量 HookInfo, 文本型.子程序 _初始化, , , 當基于本類的對象被創建后,此方法會被自動調用.子程序 _銷毀, , , 當基于本類的對象被銷毀前,此方法會被自動調用.子程序 InstallApiHook, 邏輯型, 公開.參數 lpLibFileName, 文本型.參數 lpProcName, 文本型.參數 lpfn, 整數型pFunAddress = GetProcAddress (GetModuleHandleA (lpLibFileName), lpProcName) ' 獲取API函數地址.如果真 (pFunAddress = 0) 返回 (假).如果真結束VirtualProtect (pFunAddress, 8, #PAGE_EXECUTE_READWRITE, OldProtect) ' 把內存塊設置為可讀寫NewData = { 184 } + 到字節集 (lpfn) + { 255, 224 } ' 生成新機器碼數據OldData = 指針到字節集 (pFunAddress, 8) ' 保存舊機器碼數據HookInfo = lpLibFileName + “|” + lpProcName返回 (真).子程序 BeginHook, , 公開.如果真 (pFunAddress ≠ 0) 寫到內存 (NewData, pFunAddress, 8).如果真結束.子程序 StopHook, , 公開.如果真 (pFunAddress ≠ 0) 寫到內存 (OldData, pFunAddress, 8).如果真結束.子程序 UninstallApiHook, , 公開.局部變量 temp, 整數型.如果真 (pFunAddress ≠ 0) 寫到內存 (OldData, pFunAddress, 8) VirtualProtect (pFunAddress, 8, OldProtect, temp).如果真結束連續賦值 (0, pFunAddress, OldProtect)連續賦值 ({ }, NewData, OldData)連續賦值 (“”, HookInfo).子程序 GetApiHookInfo, 文本型, 公開返回 (HookInfo)
啟動窗口程序集
.版本 2.程序集 窗口程序集_啟動窗口.程序集變量 hhk, 整數型.子程序 __啟動窗口_創建完畢APIHook.InstallApiHook (“user32.dll”, “MessageBoxA”, 到數值 (&MyMessageBox)) ' 安裝APIHOOKAPIHook.BeginHook ()信息框 (“你好”, 0, )信息框 (“你好”, 0, )結束 ().子程序 __啟動窗口_將被銷毀APIHook.UninstallApiHook ().子程序 Proc, 整數型.參數 nCode, 整數型.參數 wParam, 整數型.參數 lParam, 整數型.判斷開始 (nCode = #HCBT_ACTIVATE) 輸出調試文本 (“信息框的句柄:” + 到文本 (wParam)) UnhookWindowsHookEx (hhk).默認.判斷結束CallNextHookEx (hhk, nCode, wParam, lParam)返回 (0).子程序 MyMessageBox, 整數型.參數 hwnd, 整數型.參數 lpText, 文本型.參數 lpCaption, 文本型.參數 wtype, 整數型.局部變量 ret, 整數型輸出調試文本 (“=============”)輸出調試文本 (hwnd, lpText, lpCaption, wtype)輸出調試文本 (“=============”)APIHook.StopHook ()hhk = SetWindowsHookExA (#WH_CBT, 到整數 (&Proc), 0, GetCurrentThreadId ())ret = MessageBoxA (hwnd, lpText, lpCaption, wtype)APIHook.BeginHook ()返回 (ret)
運行結果:
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。
新聞熱點
疑難解答