這篇文章給大家介紹怎么在易語(yǔ)言中使用HOOK注入獲取內(nèi)容,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
成都創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)成都全網(wǎng)營(yíng)銷(xiāo)、網(wǎng)站重做改版、睢寧縣網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為睢寧縣等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
DLL命令表
.版本 2 .DLL命令 RtlMoveMemory, 整數(shù)型, "kernel32.dll", "RtlMoveMemory" .參數(shù) Destination, 整數(shù)型 .參數(shù) Source, 整數(shù)型 .參數(shù) Length, 整數(shù)型 .DLL命令 CreateWindowExA, 整數(shù)型 .參數(shù) dwExStyle, 整數(shù)型 .參數(shù) lpClassName, 文本型 .參數(shù) lpWindowName, 文本型 .參數(shù) dwStyle, 整數(shù)型 .參數(shù) x, 整數(shù)型 .參數(shù) y, 整數(shù)型 .參數(shù) nWidth, 整數(shù)型 .參數(shù) nHeight, 整數(shù)型 .參數(shù) hWndParent, 整數(shù)型 .參數(shù) hMenu, 整數(shù)型 .參數(shù) hInstance, 整數(shù)型 .參數(shù) lpParam, 整數(shù)型 .DLL命令 VirtualProtect, 邏輯型 .參數(shù) lpAddress, 整數(shù)型 .參數(shù) dwSize, 整數(shù)型 .參數(shù) flNewProtect, 整數(shù)型 .參數(shù) lpflOldProtect, 整數(shù)型, 傳址 .DLL命令 SetWindowLongA, 整數(shù)型, , "SetWindowLongA" .參數(shù) hWnd, 整數(shù)型 .參數(shù) nIndex, 整數(shù)型 .參數(shù) dwNewLong, 整數(shù)型 .DLL命令 CallWindowProcA, 整數(shù)型, , "CallWindowProcA" .參數(shù) lpPrevWndFunc, 整數(shù)型 .參數(shù) hWnd, 整數(shù)型 .參數(shù) Msg, 整數(shù)型 .參數(shù) wParam, 整數(shù)型 .參數(shù) lParam, 整數(shù)型 .DLL命令 GetProcAddress, 整數(shù)型 .參數(shù) hModule, 整數(shù)型 .參數(shù) lpProcName, 文本型 .DLL命令 GetModuleHandleA, 整數(shù)型 .參數(shù) lpModuleName, 文本型 .DLL命令 MessageBoxA, 整數(shù)型, "user32.dll", "MessageBoxA", 公開(kāi), 顯示和操作一個(gè)消息框。該消息框包含一個(gè)應(yīng)用程序定義的消息和標(biāo)題,加上預(yù)定義的圖標(biāo)和按鈕的任意組合。 wLanguageId參數(shù)指定為預(yù)定義的按鈕使用的語(yǔ)言資源集。 .參數(shù) hwnd, 整數(shù)型, , 要?jiǎng)?chuàng)建的消息框的所有者窗口的句柄。如果這個(gè)參數(shù)為NULL,則消息框沒(méi)有所有者窗口 .參數(shù) lpText, 文本型 .參數(shù) lpCaption, 文本型 .參數(shù) wtype, 整數(shù)型 .DLL命令 SetWindowsHookExA, 整數(shù)型, "User32.dll", "SetWindowsHookExA", 公開(kāi), HHOOK WINAPI SetWindowsHookEx .參數(shù) idHook, , , _In_ int idHook, .參數(shù) lpfn, , , _In_ HOOKPROC lpfn, .參數(shù) hMod, , , _In_ HINSTANCE hMod, .參數(shù) dwThreadId, , , _In_ DWORD dwThreadId .DLL命令 GetCurrentThreadId, 整數(shù)型, "kernel32.dll", "GetCurrentThreadId", 公開(kāi), 取當(dāng)前線程ID .DLL命令 CallNextHookEx, 整數(shù)型, "User32.dll", "CallNextHookEx", 公開(kāi), LRESULT WINAPI CallNextHookEx .參數(shù) hhk, 整數(shù)型, , _In_opt_ HHOOK hhk, .參數(shù) nCode, 整數(shù)型, , _In_ int nCode, .參數(shù) wParam, 整數(shù)型, , _In_ WPARAM wParam, .參數(shù) lParam, 整數(shù)型, , _In_ LPARAM lParam .DLL命令 GetForegroundWindow, 整數(shù)型, "User32.dll", "GetForegroundWindow", 公開(kāi), HWND WINAPI GetForegroundWindow .DLL命令 UnhookWindowsHookEx, 邏輯型, "User32.dll", "UnhookWindowsHookEx", 公開(kāi), BOOL WINAPI UnhookWindowsHookEx .參數(shù) hhk, , , _In_ HHOOK hhk
常量數(shù)據(jù)表
.版本 2 .常量 GWL_WNDPROC, "-4" .常量 PAGE_EXECUTE_READWRITE, "64" .常量 WM_NOTIFY, "78" .常量 WH_CBT, "5" .常量 HCBT_ACTIVATE, "5"
全局變量表
.版本 2 .全局變量 APIHook, APIHOOK類(lèi)
APIHOOK獲取信息框內(nèi)容
.版本 2 .程序集 APIHOOK類(lèi) .程序集變量 pFunAddress, 整數(shù)型 .程序集變量 OldProtect, 整數(shù)型 .程序集變量 NewData, 字節(jié)集 .程序集變量 OldData, 字節(jié)集 .程序集變量 HookInfo, 文本型 .子程序 _初始化, , , 當(dāng)基于本類(lèi)的對(duì)象被創(chuàng)建后,此方法會(huì)被自動(dòng)調(diào)用 .子程序 _銷(xiāo)毀, , , 當(dāng)基于本類(lèi)的對(duì)象被銷(xiāo)毀前,此方法會(huì)被自動(dòng)調(diào)用 .子程序 InstallApiHook, 邏輯型, 公開(kāi) .參數(shù) lpLibFileName, 文本型 .參數(shù) lpProcName, 文本型 .參數(shù) lpfn, 整數(shù)型 pFunAddress = GetProcAddress (GetModuleHandleA (lpLibFileName), lpProcName) ' 獲取API函數(shù)地址 .如果真 (pFunAddress = 0) 返回 (假) .如果真結(jié)束 VirtualProtect (pFunAddress, 8, #PAGE_EXECUTE_READWRITE, OldProtect) ' 把內(nèi)存塊設(shè)置為可讀寫(xiě) NewData = { 184 } + 到字節(jié)集 (lpfn) + { 255, 224 } ' 生成新機(jī)器碼數(shù)據(jù) OldData = 指針到字節(jié)集 (pFunAddress, 8) ' 保存舊機(jī)器碼數(shù)據(jù) HookInfo = lpLibFileName + “|” + lpProcName 返回 (真) .子程序 BeginHook, , 公開(kāi) .如果真 (pFunAddress ≠ 0) 寫(xiě)到內(nèi)存 (NewData, pFunAddress, 8) .如果真結(jié)束 .子程序 StopHook, , 公開(kāi) .如果真 (pFunAddress ≠ 0) 寫(xiě)到內(nèi)存 (OldData, pFunAddress, 8) .如果真結(jié)束 .子程序 UninstallApiHook, , 公開(kāi) .局部變量 temp, 整數(shù)型 .如果真 (pFunAddress ≠ 0) 寫(xiě)到內(nèi)存 (OldData, pFunAddress, 8) VirtualProtect (pFunAddress, 8, OldProtect, temp) .如果真結(jié)束 連續(xù)賦值 (0, pFunAddress, OldProtect) 連續(xù)賦值 ({ }, NewData, OldData) 連續(xù)賦值 (“”, HookInfo) .子程序 GetApiHookInfo, 文本型, 公開(kāi) 返回 (HookInfo)
啟動(dòng)窗口程序集
.版本 2 .程序集 窗口程序集_啟動(dòng)窗口 .程序集變量 hhk, 整數(shù)型 .子程序 __啟動(dòng)窗口_創(chuàng)建完畢 APIHook.InstallApiHook (“user32.dll”, “MessageBoxA”, 到數(shù)值 (&MyMessageBox)) ' 安裝APIHOOK APIHook.BeginHook () 信息框 (“你好”, 0, ) 信息框 (“你好”, 0, ) 結(jié)束 () .子程序 __啟動(dòng)窗口_將被銷(xiāo)毀 APIHook.UninstallApiHook () .子程序 Proc, 整數(shù)型 .參數(shù) nCode, 整數(shù)型 .參數(shù) wParam, 整數(shù)型 .參數(shù) lParam, 整數(shù)型 .判斷開(kāi)始 (nCode = #HCBT_ACTIVATE) 輸出調(diào)試文本 (“信息框的句柄:” + 到文本 (wParam)) UnhookWindowsHookEx (hhk) .默認(rèn) .判斷結(jié)束 CallNextHookEx (hhk, nCode, wParam, lParam) 返回 (0) .子程序 MyMessageBox, 整數(shù)型 .參數(shù) hwnd, 整數(shù)型 .參數(shù) lpText, 文本型 .參數(shù) lpCaption, 文本型 .參數(shù) wtype, 整數(shù)型 .局部變量 ret, 整數(shù)型 輸出調(diào)試文本 (“=============”) 輸出調(diào)試文本 (hwnd, lpText, lpCaption, wtype) 輸出調(diào)試文本 (“=============”) APIHook.StopHook () hhk = SetWindowsHookExA (#WH_CBT, 到整數(shù) (&Proc), 0, GetCurrentThreadId ()) ret = MessageBoxA (hwnd, lpText, lpCaption, wtype) APIHook.BeginHook () 返回 (ret)
運(yùn)行結(jié)果:
關(guān)于怎么在易語(yǔ)言中使用HOOK注入獲取內(nèi)容就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。