连接到 DirectX 应用程序

Posted

技术标签:

【中文标题】连接到 DirectX 应用程序【英文标题】:Hooking into DirectX application 【发布时间】:2009-11-16 17:10:02 【问题描述】:

我目前正在尝试在基于 DirectX 的游戏中向用户显示一些信息(作为覆盖),就像 Fraps 显示的帧数一样,但我不知道从哪里开始。我不希望我的问题得到完整的解决方案,只是一些提示,我可以从哪里开始以及从哪里获取有关该主题的更多信息;)

提前致谢。

PS:我正在做的项目是用 C# (.NET 3.5) 编写的

PPS:澄清一下:我的意思是加入任何基于 DX 的随机游戏。启动我的应用程序,启动任何游戏,显示某种叠加层。

【问题讨论】:

【参考方案1】:

一种方法是在可执行文件旁边放置一个 d3d9.dll。 DLL 搜索模式将始终首先搜索当前目录。

现在它只是实现 DirectX 接口以将所有内容传递给 REAL d3d9.dll 的“小”问题。完成此操作后,每次用户调用出现时,您都可以注入一些您自己的渲染。对于帧速率示例,您可以测量当前调用之间的时间。

拦截 D3D9.dll 的加载而不放置您自己的 DLL 要复杂得多。

这里有其他类型的信息:

http://www.codeproject.com/Articles/20084/A-More-Complete-DLL-Injection-Solution-Using-Creat

【讨论】:

当前是死链接:( 1 个死链接和 1 个指向托管病毒的站点的链接;)【参考方案2】:

感谢 Goz,我还找到了有关该主题的以下有趣资源:

http://usl.sis.pitt.edu/wjj/UTClient/Hooking%20Direct3d.doc http://forum.cheatengine.org/viewtopic.php?t=161045 http://research.microsoft.com/apps/pubs/default.aspx?id=68568

似乎 Microsoft Detours 是要走的路……不过还没有时间尝试。

【讨论】:

【参考方案3】:

不确定您是否仍在寻找关于此的想法,但对于您或其他可能尝试此方法的人,这里是我准备的 hooking the IDirect3DDevice9 methods in C# 示例。

它使用 EasyHook 进行 DLL 注入 + 方法挂钩,并使用一个小的 C++ 实用程序 dll 来确定要在运行时挂钩的函数地址。 EasyHook 在 Microsoft Detours 中断的地方继续前进。

【讨论】:

链接已弃用

以上是关于连接到 DirectX 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

DirectX11--深入理解与使用2D纹理资源

Chromecast 发件人应用程序未连接到 Android Receiver 应用程序,始终连接到 Web 接收器

在 Windows 10 上连接到 Sphero 螺栓并在不使用 Sphero edu 应用程序的情况下使用 javascript 连接到它的最佳方法是啥?

将 MongoDB 连接到 MERN 应用程序

从 Heroku 连接到 MongoDb 时应用程序超时

创建连接到 MYSQL 的独立 Matlab 应用程序