纯源码 D3DHOOK绘制例子 简单易懂
纯源码 D3DHOOK绘制例子 简单易懂 逻辑清晰 适合学习D3DHOOK的朋友
相关的函数可以自行扩展 达到自己想要的效果
游戏里面也可以使用,Z缓冲可以达到穿透模型遮挡
另外附上CSGO注入代码(某些程序HOOK了一些函数导致无法注入,我这里给出一个解决办法)
局_进程句柄 = OpenProcess (2035711, 0, 目标进程ID)
如果真 (局_进程句柄 = 0)
信息框 (“打开进程失败!”, 16, , )
返回 (假)
' 解除CSGO HOOK
NtOpenFile_函数地址 = GetProcAddress1 (GetModuleHandleA (“ntdll”), “NtOpenFile”)
NtOpenFile_原函数头 = 取空白字节集 (5)
ReadProcessMemory_字节集 (局_进程句柄, NtOpenFile_函数地址, NtOpenFile_原函数头, 5, 0)
如果真 (取字节集左边 (NtOpenFile_原函数头, 1) = { 233 }) ' 代表被HOOK
ReadProcessMemory_字节集 (-1, NtOpenFile_函数地址, NtOpenFile_原函数头, 5, 0)
WriteProcessMemory_字节集 (局_进程句柄, NtOpenFile_函数地址, NtOpenFile_原函数头, 5, 0)
' 开始注入DLL
长度 = 取文本长度 (要注入的DLL文件名)
局_内存值 = VirtualAllocEx (局_进程句柄, 0, 长度, 4096, 4)
如果真 (局_内存值 = 0)
返回 (假)
WriteProcessMemory_字节集 (局_进程句柄, 局_内存值, 到字节集 (要注入的DLL文件名), 长度, 0)
局_函数地址 = GetProcAddress1 (GetModuleHandleA (“Kernel32”), “LoadLibraryA”)
局_线程ID = CreateRemoteThread (局_进程句柄, 0, 0, 局_函数地址, 局_内存值, 0, 0)
如果真 (局_线程ID = 0)
返回 (假)
WaitForSingleObject (局_线程ID, 4294967295)
VirtualFreeEx (局_进程句柄, 局_内存值, 0, 32768)
CloseHandle (局_线程ID)
CloseHandle (局_进程句柄)
返回 (真)
源码奉上:
相关的函数可以自行扩展 达到自己想要的效果
游戏里面也可以使用,Z缓冲可以达到穿透模型遮挡
另外附上CSGO注入代码(某些程序HOOK了一些函数导致无法注入,我这里给出一个解决办法)
子程序名 | 返回值类型 | 公开 | 备 注 | ||||
线程_注入_修复NtOpenFile | 逻辑型 | ||||||
参数名 | 类 型 | 参考 | 可空 | 数组 | 备 注 | ||
目标进程ID | 整数型 | 要注入的进程ID | |||||
要注入的DLL文件名 | 文本型 | DLL名称 |
变量名 | 类 型 | 静态 | 数组 | 备 注 | ||
长度 | 整数型 | |||||
局_内存值 | 整数型 | |||||
局_进程句柄 | 整数型 | |||||
局_函数地址 | 整数型 | |||||
局_线程ID | 整数型 | |||||
NtOpenFile_函数地址 | 整数型 | |||||
NtOpenFile_原函数头 | 字节集 |
如果真 (局_进程句柄 = 0)
信息框 (“打开进程失败!”, 16, , )
返回 (假)
' 解除CSGO HOOK
NtOpenFile_函数地址 = GetProcAddress1 (GetModuleHandleA (“ntdll”), “NtOpenFile”)
NtOpenFile_原函数头 = 取空白字节集 (5)
ReadProcessMemory_字节集 (局_进程句柄, NtOpenFile_函数地址, NtOpenFile_原函数头, 5, 0)
如果真 (取字节集左边 (NtOpenFile_原函数头, 1) = { 233 }) ' 代表被HOOK
ReadProcessMemory_字节集 (-1, NtOpenFile_函数地址, NtOpenFile_原函数头, 5, 0)
WriteProcessMemory_字节集 (局_进程句柄, NtOpenFile_函数地址, NtOpenFile_原函数头, 5, 0)
' 开始注入DLL
长度 = 取文本长度 (要注入的DLL文件名)
局_内存值 = VirtualAllocEx (局_进程句柄, 0, 长度, 4096, 4)
如果真 (局_内存值 = 0)
返回 (假)
WriteProcessMemory_字节集 (局_进程句柄, 局_内存值, 到字节集 (要注入的DLL文件名), 长度, 0)
局_函数地址 = GetProcAddress1 (GetModuleHandleA (“Kernel32”), “LoadLibraryA”)
局_线程ID = CreateRemoteThread (局_进程句柄, 0, 0, 局_函数地址, 局_内存值, 0, 0)
如果真 (局_线程ID = 0)
返回 (假)
WaitForSingleObject (局_线程ID, 4294967295)
VirtualFreeEx (局_进程句柄, 局_内存值, 0, 32768)
CloseHandle (局_线程ID)
CloseHandle (局_进程句柄)
返回 (真)
源码奉上:
下载地址
蓝奏网盘
本文作者:Cencrack
文章标题: 纯源码 D3DHOOK绘制例子 简单易懂
本文地址:http://cencrack.com/?post=71
版权声明:若无注明,本文皆为“Cencrack bolg”原创,转载请保留文章出处。
本文地址:http://cencrack.com/?post=71
版权声明:若无注明,本文皆为“Cencrack bolg”原创,转载请保留文章出处。
相关文章
那个大叔2021-11-22 12:27
为什么我下载安装到D盘之后,运行找不到各种软件
回复