天天看點

易語言hook注入java_易語言利用HOOK注入擷取内容的代碼

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)) ' 安裝APIHOOK

APIHook.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)

運作結果:

易語言hook注入java_易語言利用HOOK注入擷取内容的代碼

總結

以上就是這篇文章的全部内容了,希望本文的内容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支援。如果你想了解更多相關内容請檢視下面相關連結