您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關易語言中HOOKAPI鉤子操作的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
DLL代碼
.版本 2 .DLL命令 修改虛擬保護, 整數型, "kernel32", "VirtualProtect", , 修改虛擬保護 .參數 lpAddress, 整數型 .參數 dwSize, 整數型 .參數 flNewProtect, 整數型 .參數 lpflOldProtect, 整數型, 傳址 .DLL命令 取函數地址, 整數型, "kernel32", "GetProcAddress", , 返回函數地址 .參數 模塊句柄, 整數型 .參數 函數名, 文本型 .DLL命令 取模塊句柄, 整數型, "kernel32", "GetModuleHandleA", , 獲取一個應用程序或動態鏈接庫的模塊句柄 如執行成功成功,則返回模塊句柄。零表示失敗。會設置GetLastError .參數 模塊名, 文本型, , 指定模塊名,這通常是與模塊的文件名相同的一個名字。例如,NOTEPAD.EXE程序的模塊文件名就叫作NOTEPAD; .DLL命令 建立消息框, 整數型, "user32", "MessageBoxA", , 建立消息框窗體 .參數 窗口句柄, 整數型 .參數 lpText, 文本型 .參數 lpCaption, 文本型 .參數 wType, 整數型
自定義數據類型
.版本 2 .數據類型 MEMORYSTATUS .成員 dwLength, 整數型 .成員 dwMemoryLoad, 整數型 .成員 dwTotalPhys, 整數型 .成員 dwAvailPhys, 整數型 .成員 dwTotalPageFile, 整數型 .成員 dwAvailPageFile, 整數型 .成員 dwTotalVirtual, 整數型 .成員 dwAvailVirtual, 整數型
HOOKAPI鉤子操作代碼
.版本 2 .程序集 窗口程序集1 .程序集變量 鉤子地址, 整數型 .程序集變量 原始數據, 字節集 .程序集變量 OldProtect, 整數型 .子程序 _按鈕3_被單擊 信息框 (“這是一個測試本地HOOK”, 0, “如果掛鉤了,本文本就會變化!”) .子程序 _按鈕1_被單擊 .局部變量 值, 字節集 鉤子地址 = 取函數地址 (取模塊句柄 (“User32.dll”), “MessageBoxA”) .如果真 (鉤子地址 = 0) 信息框 (“無法獲取函數地址!!!”, 0, ) 返回 () .如果真結束 修改虛擬保護 (鉤子地址, 8, 64, OldProtect) 原始數據 = 指針到字節集 (鉤子地址, 8) 值 = { 184 } 寫到內存 (值 + 到字節集 (&MessageBoxA) + { 255, 224 }, 鉤子地址, 8) .子程序 MessageBoxA, 整數型 .參數 hWnd, 整數型, , 窗口句柄 .參數 lpText, 文本型, , 提示文本 .參數 lpCaption, 文本型, , 信息標題 .參數 uType, 整數型, , 按鈕類型 .局部變量 值, 字節集 lpText = lpText + “----lpText-----掛鉤成功!” lpCaption = lpCaption + “-----lpCaption----掛鉤成功!” .如果真 (取字節集長度 (原始數據) > 0) 寫到內存 (原始數據, 鉤子地址, ) .如果真結束 建立消息框 (hWnd, lpText, lpCaption, uType) 值 = { 184 } 寫到內存 (值 + 到字節集 (&MessageBoxA) + { 255, 224 }, 鉤子地址, 8) 返回 (0) .子程序 _按鈕2_被單擊 .如果真 (取字節集長度 (原始數據) > 0) 寫到內存 (原始數據, 鉤子地址, ) .如果真結束
運行結果:
關于“易語言中HOOKAPI鉤子操作的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。