易語(yǔ)言利用HOOK注入獲取內(nèi)容的代碼
更新時(shí)間:2018年11月29日 11:54:18 作者:易語(yǔ)言源碼教程
今天小編就為大家分享一篇關(guān)于易語(yǔ)言利用HOOK注入獲取內(nèi)容的代碼,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lá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", 公開(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類
APIHOOK獲取信息框內(nèi)容
.版本 2
.程序集 APIHOOK類
.程序集變量 pFunAddress, 整數(shù)型
.程序集變量 OldProtect, 整數(shù)型
.程序集變量 NewData, 字節(jié)集
.程序集變量 OldData, 字節(jié)集
.程序集變量 HookInfo, 文本型
.子程序 _初始化, , , 當(dāng)基于本類的對(duì)象被創(chuàng)建后,此方法會(huì)被自動(dòng)調(diào)用
.子程序 _銷毀, , , 當(dāng)基于本類的對(duì)象被銷毀前,此方法會(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)窗口_將被銷毀 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é)果:

總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
一步一步跟我學(xué)易語(yǔ)言之初學(xué)者的常見(jiàn)問(wèn)題
今天小編就為大家分享一篇關(guān)于一步一步跟我學(xué)易語(yǔ)言之初學(xué)者的常見(jiàn)問(wèn)題,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10
易語(yǔ)言目錄框的目錄被改變后取得改變后的目錄并在編輯框中顯示
今天小編就為大家分享一篇關(guān)于易語(yǔ)言目錄框的目錄被改變后取得改變后的目錄并在編輯框中顯示,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-11-11

