18年玩wxhook的时候找的 放在硬盘也是烂了 注释算详细了吧~~~
窗口程序集名 | 保 留 | 保 留 | 备 注 | Inline_HOOK | | | |
|
Uninstall_Hook | 整数型 | | |
code地址 | 整数型 | | | | code长度 | 整数型 | | | | code数据 | 字节集 | | | | 虚拟内存 | 整数型 | | | | WriteProcessMemory (-1, code地址, code数据, code长度, 0 ) 返回 (VirtualFree (虚拟内存, 0, #MEM_RELEASE )) |
Inline_GetBuf | 字节集 | | |
目标地址 | 整数型 | | | | 当前地址 | 整数型 | | | |
调用地址 = 当前地址 - 目标地址 - 5 返回 (到字节集 (调用地址 )) |
Inline_Hook | 字节集 | | |
Hook地址 | 整数型 | | | | Hook长度 | 整数型 | | | | Hook数据 | 字节集 | | | | 回调地址 | 整数型 | | | | 回调偏移 | 整数型 | | | | 是否前置 | 逻辑型 | | | | 虚拟内存 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 原Code | 字节集 | | | 数据长度 | 整数型 | | | 局部字节 | 字节集 | | |
原Code = 取空白字节集 (Hook长度 ) 数据长度 = 取字节集长度 (Hook数据 ) ReadProcessMemory2 (-1, Hook地址, 原Code, Hook长度, 0 ) 虚拟内存 = VirtualAlloc (0, 128, #MEM_COMMIT, #PAGE_EXECUTE_READWRITE ) 判断 (是否前置 = 真) WriteProcessMemory (-1, 虚拟内存, 原Code, 取字节集长度 (原Code ), 0 ) WriteProcessMemory (-1, 虚拟内存 + Hook长度, Hook数据, 数据长度, 0 ) WriteProcessMemory (-1, 虚拟内存 + Hook长度 + 回调偏移, Inline_GetBuf (虚拟内存 + 回调偏移 - 1, 回调地址 ), 4, 0 ) WriteProcessMemory (-1, 虚拟内存 + Hook长度 + 数据长度, { 233 } + Inline_GetBuf (虚拟内存 + 数据长度 + Hook长度, Hook地址 + Hook长度 ), 5, 0 ) WriteProcessMemory (-1, 虚拟内存, Hook数据, 数据长度, 0 ) WriteProcessMemory (-1, 虚拟内存 + 回调偏移, Inline_GetBuf (虚拟内存 + 回调偏移 - 1, 回调地址 ), 4, 0 ) WriteProcessMemory (-1, 虚拟内存 + 数据长度, 原Code, Hook长度, 0 ) WriteProcessMemory (-1, 虚拟内存 + 数据长度 + Hook长度, { 233 } + Inline_GetBuf (虚拟内存 + 数据长度 + Hook长度, Hook地址 + Hook长度 ), 5, 0 ) WriteProcessMemory (-1, Hook地址, { 233 } + Inline_GetBuf (Hook地址, 虚拟内存 ), 5, 0 ) 计次循环首 (Hook长度 - 5, ) 局部字节 = 局部字节 + { 144 } 计次循环尾 () WriteProcessMemory (-1, Hook地址 + 5, 局部字节, 取字节集长度 (局部字节 ), 0 )返回 (原Code )|
Inline_Hook_E8Code | | | |
E8地址 | 整数型 | | | | Hook地址 | 整数型 | | | | Hook数据 | 字节集 | | | | 回调地址 | 整数型 | | | | 回调偏移 | 整数型 | | | | 虚拟内存地址 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 数据长度 | 整数型 | | | 局部字节 | 字节集 | | | Hook长度 | 整数型 | | |
Hook长度 = 5 数据长度 = 取字节集长度 (Hook数据 ) 虚拟内存地址 = VirtualAlloc (0, 128, #MEM_COMMIT, #PAGE_EXECUTE_READWRITE ) WriteProcessMemory (-1, 虚拟内存地址, Hook数据, 数据长度, 0 ) WriteProcessMemory (-1, 虚拟内存地址 + 回调偏移, Inline_GetBuf (虚拟内存地址 + 回调偏移 - 1, 回调地址 ), 4, 0 ) WriteProcessMemory (-1, 虚拟内存地址 + 数据长度, { 232 } + Inline_GetBuf (虚拟内存地址 + 数据长度, E8地址 ), Hook长度, 0 ) WriteProcessMemory (-1, 虚拟内存地址 + 数据长度 + Hook长度, { 233 } + Inline_GetBuf (虚拟内存地址 + 数据长度 + Hook长度, Hook地址 + Hook长度 ), 5, 0 ) WriteProcessMemory (-1, Hook地址, { 233 } + Inline_GetBuf (Hook地址, 虚拟内存地址 ), 5, 0 ) 计次循环首 (Hook长度 - 5, ) 局部字节 = 局部字节 + { 144 } 计次循环尾 () WriteProcessMemory (-1, Hook地址 + 5, 局部字节, 取字节集长度 (局部字节 ), 0 )
|