易語言利用HOOK注入獲取內(nèi)容的代碼
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", 公開, 顯示和操作一個(gè)消息框。該消息框包含一個(gè)應(yīng)用程序定義的消息和標(biāo)題,加上預(yù)定義的圖標(biāo)和按鈕的任意組合。 wLanguageId參數(shù)指定為預(yù)定義的按鈕使用的語言資源集。 .參數(shù) hwnd, 整數(shù)型, , 要?jiǎng)?chuàng)建的消息框的所有者窗口的句柄。如果這個(gè)參數(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)建后,此方法會(huì)被自動(dòng)調(diào)用 .子程序 _銷毀, , , 當(dāng)基于本類的對象被銷毀前,此方法會(huì)被自動(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)
啟動(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)窗口_將被銷毀 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)
運(yùn)行結(jié)果:
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
易語言設(shè)置組合框項(xiàng)目數(shù)值的方法
今天小編就為大家分享一篇關(guān)于易語言設(shè)置組合框項(xiàng)目數(shù)值的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-11-11易語言的網(wǎng)絡(luò)驗(yàn)證實(shí)現(xiàn)詳解
在本篇內(nèi)容中小編給大家整理了關(guān)于易語言的網(wǎng)絡(luò)驗(yàn)證實(shí)現(xiàn)的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考下。2018-12-12易語言利用取字符實(shí)現(xiàn)Excel列號(hào)與字母互轉(zhuǎn)功能的代碼
今天小編就為大家分享一篇關(guān)于易語言利用取字符實(shí)現(xiàn)Excel列號(hào)與字母互轉(zhuǎn)功能的代碼,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-11-11