首页 > 其他 > 详细

FPS 游戏实现D3D透视

时间:2019-10-14 12:28:53      阅读:201      评论:0      收藏:0      [点我收藏+]

FPS游戏可以说一直都比较热门,典型的代表有反恐精英,穿越火线,绝地求生等,基本上只要是FPS游戏都会有透视挂的存在,而透视挂还分为很多种类型,常见的有D3D透视,方框透视,还有一些比较高端的显卡透视,本教程将学习D3D透视的实现原理,并通过DLL注入的方式实现透视。

Direct3D 透视是一种主流的透视方式,因为现如今大部分游戏都会使用Dx9图形接口,那么我们该如何实现D3D透视?

在D3D中普遍会使用深度缓存区(Depth Buffer)来进行消隐处理,通过使用Z轴深度缓存即可实现将人物被遮挡的部分不被显示出来,而我们的目的就是要让它强制显示出来,D3D的核心功能主要集成在COM组件中,只要Hook其中EndScence(), DrawPrimitive(),DrawIndexedPrimitive()函数就可以感知绘图操作,然后通过调用SetRenderState()渲染函数,改变其中的渲染参数即可实现不同的透视效果.

如上概述可知:我们需要找到 DrawIndexedPrimitive 这个渲染函数并 hook 这个函数即可实现透视,但需要注意,该函数与普通的API函数不一样,由于DirectX的功能都是以COM组件的形式提供的类函数,所以普通的Hook无法搞它,我这里直接找到了函数地址直接hook,或者你也可以使用Detour库来搞?它。

为了确保能够正常的编译代码,请自行配置好 Direct3D 9 SDK 和 VS 系列开发环境,过程中使用了 IDA,x64dbg,debugview工具,我这里还是使用CS起源作为演示对象吧,电脑上没别的游戏。

SetWindowHook 全局注入:

未完待续。。。。。

FPS 游戏实现D3D透视

原文:https://www.cnblogs.com/LyShark/p/11670487.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!