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) 寫到內存 (原始數據, 鉤子地址, ).如果真結束
運行結果:
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。
新聞熱點
疑難解答