挂钩到DirectX应用程序

时间:2009-11-16 17:10:02

标签: c# .net directx

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

提前致谢。

PS:我正在研究的项目是用C#(.NET 3.5)

编写的 PPS:澄清:我的意思是挂钩任何随机的DX游戏。启动我的应用程序,启动任何游戏,显示某种覆盖。

3 个答案:

答案 0 :(得分:4)

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

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

在不放置自己的DLL的情况下拦截D3D9.dll的加载是很复杂的。

其他类型的信息:

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

答案 1 :(得分:2)

感谢Goz,我还在这个主题上找到了以下有趣的资源:

看起来像微软Detours是要走的路......但是还没时间尝试一下。

答案 2 :(得分:2)

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

它使用EasyHook进行DLL注入+方法挂钩,并使用一个小的C ++实用程序dll来确定在运行时挂钩的函数地址。 EasyHook选择微软Detours停止的地方。

相关问题