易語言利用HOOK注入獲取內(nèi)容的代碼
更新時間:2018年11月29日 11:54:18 作者:易語言源碼教程
今天小編就為大家分享一篇關(guān)于易語言利用HOOK注入獲取內(nèi)容的代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
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", 公開, 顯示和操作一個消息框。該消息框包含一個應(yīng)用程序定義的消息和標(biāo)題,加上預(yù)定義的圖標(biāo)和按鈕的任意組合。 wLanguageId參數(shù)指定為預(yù)定義的按鈕使用的語言資源集。 .參數(shù) hwnd, 整數(shù)型, , 要創(chuàng)建的消息框的所有者窗口的句柄。如果這個參數(shù)為NULL,則消息框沒有所有者窗口 .參數(shù) lpText, 文本型 .參數(shù) lpCaption, 文本型 .參數(shù) wtype, 整數(shù)型 .DLL命令 SetWindowsHookExA, 整數(shù)型, "User32.dll", "SetWindowsHookExA", 公開, 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", 公開, 取當(dāng)前線程ID .DLL命令 CallNextHookEx, 整數(shù)型, "User32.dll", "CallNextHookEx", 公開, 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", 公開, HWND WINAPI GetForegroundWindow .DLL命令 UnhookWindowsHookEx, 邏輯型, "User32.dll", "UnhookWindowsHookEx", 公開, 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類
APIHOOK獲取信息框內(nèi)容
.版本 2 .程序集 APIHOOK類 .程序集變量 pFunAddress, 整數(shù)型 .程序集變量 OldProtect, 整數(shù)型 .程序集變量 NewData, 字節(jié)集 .程序集變量 OldData, 字節(jié)集 .程序集變量 HookInfo, 文本型 .子程序 _初始化, , , 當(dāng)基于本類的對象被創(chuàng)建后,此方法會被自動調(diào)用 .子程序 _銷毀, , , 當(dāng)基于本類的對象被銷毀前,此方法會被自動調(diào)用 .子程序 InstallApiHook, 邏輯型, 公開 .參數(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è)置為可讀寫 NewData = { 184 } + 到字節(jié)集 (lpfn) + { 255, 224 } ' 生成新機(jī)器碼數(shù)據(jù) OldData = 指針到字節(jié)集 (pFunAddress, 8) ' 保存舊機(jī)器碼數(shù)據(jù) HookInfo = lpLibFileName + “|” + lpProcName 返回 (真) .子程序 BeginHook, , 公開 .如果真 (pFunAddress ≠ 0) 寫到內(nèi)存 (NewData, pFunAddress, 8) .如果真結(jié)束 .子程序 StopHook, , 公開 .如果真 (pFunAddress ≠ 0) 寫到內(nèi)存 (OldData, pFunAddress, 8) .如果真結(jié)束 .子程序 UninstallApiHook, , 公開 .局部變量 temp, 整數(shù)型 .如果真 (pFunAddress ≠ 0) 寫到內(nèi)存 (OldData, pFunAddress, 8) VirtualProtect (pFunAddress, 8, OldProtect, temp) .如果真結(jié)束 連續(xù)賦值 (0, pFunAddress, OldProtect) 連續(xù)賦值 ({ }, NewData, OldData) 連續(xù)賦值 (“”, HookInfo) .子程序 GetApiHookInfo, 文本型, 公開 返回 (HookInfo)
啟動窗口程序集
.版本 2 .程序集 窗口程序集_啟動窗口 .程序集變量 hhk, 整數(shù)型 .子程序 __啟動窗口_創(chuàng)建完畢 APIHook.InstallApiHook (“user32.dll”, “MessageBoxA”, 到數(shù)值 (&MyMessageBox)) ' 安裝APIHOOK APIHook.BeginHook () 信息框 (“你好”, 0, ) 信息框 (“你好”, 0, ) 結(jié)束 () .子程序 __啟動窗口_將被銷毀 APIHook.UninstallApiHook () .子程序 Proc, 整數(shù)型 .參數(shù) nCode, 整數(shù)型 .參數(shù) wParam, 整數(shù)型 .參數(shù) lParam, 整數(shù)型 .判斷開始 (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)
運行結(jié)果:
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
易語言利用取字符實現(xiàn)Excel列號與字母互轉(zhuǎn)功能的代碼
今天小編就為大家分享一篇關(guān)于易語言利用取字符實現(xiàn)Excel列號與字母互轉(zhuǎn)功能的代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-11-11