易語言HOOKAPI鉤子操作代碼實(shí)例
更新時(shí)間:2018年11月20日 16:46:46 作者:易語言源碼教程
今天小編就為大家分享一篇關(guān)于易語言HOOKAPI鉤子操作代碼實(shí)例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
DLL代碼
.版本 2 .DLL命令 修改虛擬保護(hù), 整數(shù)型, "kernel32", "VirtualProtect", , 修改虛擬保護(hù) .參數(shù) lpAddress, 整數(shù)型 .參數(shù) dwSize, 整數(shù)型 .參數(shù) flNewProtect, 整數(shù)型 .參數(shù) lpflOldProtect, 整數(shù)型, 傳址 .DLL命令 取函數(shù)地址, 整數(shù)型, "kernel32", "GetProcAddress", , 返回函數(shù)地址 .參數(shù) 模塊句柄, 整數(shù)型 .參數(shù) 函數(shù)名, 文本型 .DLL命令 取模塊句柄, 整數(shù)型, "kernel32", "GetModuleHandleA", , 獲取一個(gè)應(yīng)用程序或動(dòng)態(tài)鏈接庫的模塊句柄 如執(zhí)行成功成功,則返回模塊句柄。零表示失敗。會(huì)設(shè)置GetLastError .參數(shù) 模塊名, 文本型, , 指定模塊名,這通常是與模塊的文件名相同的一個(gè)名字。例如,NOTEPAD.EXE程序的模塊文件名就叫作NOTEPAD; .DLL命令 建立消息框, 整數(shù)型, "user32", "MessageBoxA", , 建立消息框窗體 .參數(shù) 窗口句柄, 整數(shù)型 .參數(shù) lpText, 文本型 .參數(shù) lpCaption, 文本型 .參數(shù) wType, 整數(shù)型
自定義數(shù)據(jù)類型
.版本 2 .數(shù)據(jù)類型 MEMORYSTATUS .成員 dwLength, 整數(shù)型 .成員 dwMemoryLoad, 整數(shù)型 .成員 dwTotalPhys, 整數(shù)型 .成員 dwAvailPhys, 整數(shù)型 .成員 dwTotalPageFile, 整數(shù)型 .成員 dwAvailPageFile, 整數(shù)型 .成員 dwTotalVirtual, 整數(shù)型 .成員 dwAvailVirtual, 整數(shù)型
HOOKAPI鉤子操作代碼
.版本 2 .程序集 窗口程序集1 .程序集變量 鉤子地址, 整數(shù)型 .程序集變量 原始數(shù)據(jù), 字節(jié)集 .程序集變量 OldProtect, 整數(shù)型 .子程序 _按鈕3_被單擊 信息框 (“這是一個(gè)測(cè)試本地HOOK”, 0, “如果掛鉤了,本文本就會(huì)變化!”) .子程序 _按鈕1_被單擊 .局部變量 值, 字節(jié)集 鉤子地址 = 取函數(shù)地址 (取模塊句柄 (“User32.dll”), “MessageBoxA”) .如果真 (鉤子地址 = 0) 信息框 (“無法獲取函數(shù)地址!!!”, 0, ) 返回 () .如果真結(jié)束 修改虛擬保護(hù) (鉤子地址, 8, 64, OldProtect) 原始數(shù)據(jù) = 指針到字節(jié)集 (鉤子地址, 8) 值 = { 184 } 寫到內(nèi)存 (值 + 到字節(jié)集 (&MessageBoxA) + { 255, 224 }, 鉤子地址, 8) .子程序 MessageBoxA, 整數(shù)型 .參數(shù) hWnd, 整數(shù)型, , 窗口句柄 .參數(shù) lpText, 文本型, , 提示文本 .參數(shù) lpCaption, 文本型, , 信息標(biāo)題 .參數(shù) uType, 整數(shù)型, , 按鈕類型 .局部變量 值, 字節(jié)集 lpText = lpText + “----lpText-----掛鉤成功!” lpCaption = lpCaption + “-----lpCaption----掛鉤成功!” .如果真 (取字節(jié)集長度 (原始數(shù)據(jù)) > 0) 寫到內(nèi)存 (原始數(shù)據(jù), 鉤子地址, ) .如果真結(jié)束 建立消息框 (hWnd, lpText, lpCaption, uType) 值 = { 184 } 寫到內(nèi)存 (值 + 到字節(jié)集 (&MessageBoxA) + { 255, 224 }, 鉤子地址, 8) 返回 (0) .子程序 _按鈕2_被單擊 .如果真 (取字節(jié)集長度 (原始數(shù)據(jù)) > 0) 寫到內(nèi)存 (原始數(shù)據(jù), 鉤子地址, ) .如果真結(jié)束
運(yùn)行結(jié)果:
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接