好久没发过贴了,前段时间无聊写的个D3D透视,也用过没什么问题,
我对玩游戏都是三分钟热度,玩一盘就没兴趣了!今天无聊上开透视发现被和谐了
所以放出来给大家做个参考吧!
/////////////////////////////////////////////////////////////////////////////////////
注:源码不是最新的,不过大家根据里面的汇编定位就可以更新了
/////////////////////////////////////////////////////////////////////////////////////
第一种:
我利用的是在进入D3D透视地址之前hook ,需要说的是现在这种方法被检测了,Hook会出现非法模块!
我不知道是我注入的问题还是啥问题!
以下是Hook的汇编
[C++] 纯文本查看 复制代码
//透视枪、头盔、子弹等!
__declspec (naked) VOID HookD3D_Z()
{
__asm
{
mov eax,dword ptr ss:[ebp]
mov ecx,dword ptr ds:[eax]
mov edx,dword ptr ds:[ecx+0x148]
push edi
push 0x0
push ebx
push 0x0
push 0x0
push 0x4
push eax
mov edx,MyDrawIndexedPrimitive
call edx
pop edi
pop esi
pop ebp
pop ebx
retn 0x8
}
}
//透视身体
__declspec (naked) VOID HookD3D_F()
{
__asm
{
push edx
push 0x0
push 0x4
push eax
mov eax,dword ptr ds:[ecx+0x148]
mov eax,MyDrawIndexedPrimitive
call eax
mov eax,dword ptr ss:[esp+0x1C]
mov ecx,dword ptr ss:[ebp+0x8]
add dword ptr ss:[esp+0x18],0xC
add eax,0x1
cmp eax,dword ptr ds:[ebx+0xC0]
mov dword ptr ss:[esp+0x10],ecx
mov dword ptr ss:[esp+0x1C],eax
jl nJl
pop edi
pop esi
pop ebp
pop ebx
add esp,0x228
retn 0x14
nJl:
mov eax, 0x4C72C3
jmp eax
}
}
第二种:
[[[基址]]]+0x148
得到的就是D3D的透视地址,修改成我们自己的函数达到透视的目的!
但是这个会出现230 ,由于我的系统是WIN7 64位,结束掉一条线程即可过掉230
哪条?ntdll里的某条,大家应该都知道吧?
源码里有我写好的,大家只需要更新下就可以!
如果大家觉得注入麻烦,那么我再发一个易语言不用注入的写法
使用的是第一种方法实现的透视!
[Asm] 纯文本查看 复制代码 .版本 2
.子程序 _按钮1_被单击
.局部变量 tmp, 整数型
.局部变量 Processid, 整数型
.局部变量 hProcess, 整数型
Processid = 进程名取ID (“CrossFire.exe”)
tmp = 读内存整数型 (Processid, 7497208)
tmp = 读内存整数型 (Processid, tmp)
tmp = 读内存整数型 (Processid, tmp)
tmp = 读内存整数型 (Processid, tmp + 328)
tmp = tmp + 5
修改内存属性 (Processid, 4195584, 500, 64)
修改内存属性 (Processid, 4196352, 500, 64)
修改内存属性 (Processid, 4196864, 500, 64)
修改内存属性 (Processid, 5047151, 5, 64)
修改内存属性 (Processid, 5010811, 5, 64)
.如果 (写内存字节集 (Processid, 4195584, { 131, 236, 8, 86, 139, 116, 36, 16, 139, 6, 87, 141, 76, 36, 20, 81, 141, 84, 36, 16, 82, 139, 144, 148, 1, 0, 0, 141, 76, 36, 16, 81, 106, 0, 86, 199, 68, 36, 28, 0, 0, 0, 0, 255, 210, 133, 192, 117, 12, 139, 68, 36, 8, 139, 8, 139, 81, 8, 80, 255, 210, 139, 68, 36, 20, 131, 248, 44, 116, 10, 131, 248, 40, 116, 5, 131, 248, 32, 117, 15, 139, 6, 139, 136, 228, 0, 0, 0, 106, 0, 106, 7, 86, 255, 209, 139, 84, 36, 44, 139, 68, 36, 40, 139, 76, 36, 36, 82, 139, 84, 36, 36, 80, 139, 68, 36, 36, 81, 139, 76, 36, 36, 82, 80, 81, 86, 232, 27, 0, 0, 0, 139, 22, 106, 1, 106, 7, 139, 248, 139, 130, 228, 0, 0, 0, 86, 255, 208, 139, 199, 95, 94, 131, 196, 8, 194, 28, 0, 139, 255, 85, 139, 236, 184 } + 到字节集 (tmp) + { 255, 224 }))
写内存字节集 (Processid, 4196352, { 54, 139, 69, 0, 62, 139, 8, 62, 139, 145, 72, 1, 0, 0, 87, 106, 0, 83, 106, 0, 106, 0, 106, 4, 80, 186, 0, 5, 64, 0, 144, 255, 210, 95, 94, 93, 91, 194, 8, 0 })
写内存字节集 (Processid, 4196864, { 82, 106, 0, 106, 4, 80, 62, 139, 129, 72, 1, 0, 0, 184, 0, 5, 64, 0, 144, 255, 208, 54, 139, 68, 36, 28, 54, 139, 77, 8, 54, 131, 68, 36, 24, 12, 131, 192, 1, 62, 59, 131, 192, 0, 0, 0, 54, 137, 76, 36, 16, 54, 137, 68, 36, 28, 124, 13, 95, 94, 93, 91, 129, 196, 40, 2, 0, 0, 194, 20, 0, 184, 195, 114, 76, 0, 255, 224 })
写内存字节集 (Processid, 5047151, { 185, 0, 8, 64, 0, 255, 225 }) ' hook地址,需更新
写内存字节集 (Processid, 5010811, { 185, 0, 10, 64, 0, 255, 225 }) ' hook地址,需更新
.否则
信息框 (“失败”, 0, )
.如果结束
前段时间我在win7 64玩游戏使用第一种方法的时候,可以很稳定的透视没问题!
但是在xp上就出现第三方,偶然看到[[[基址]]]+0xAC读取到地址并跳到这个地址后看到有一个VM
该vm里面在进入图里后就触发异常,如果直接恢复掉这个VM,会出现非法模块!
后来我也没怎么深入研究这个到底是干什么用的!不过既然是VM,那么肯定没干什么好事!
可以透视的方法多种多样,就看自己有没思路了!语文比较差,大家凑合着看吧!
CF_HookD3D.zip
(2.29 KB, 下载次数: 555)
|