如何停止对DirectX的拦截调用

如何停止对DirectX的拦截调用,directx,dll-injection,Directx,Dll Injection,我读过一篇文章,题目是,它使用DLL代理截获调用,可以为DirectX获得覆盖 我正在编写一些DirectX应用程序,不希望其他人通过此方法更改它。我怎样才能防止这种情况 我可以通过检查原始DLL来完成吗?如何执行?只需检测应用程序工作目录中的d3d9.DLL(所有DX DLL)文件,如果存在,则有人试图代理。它很容易实现。无论如何,你不能让某些东西100%受到保护,因此任何比这更复杂的东西都不值得投入时间:) 我设法从所有游戏中获取数据,它们有数百万的预算:)检测它是否是代理的“最简单”方法是

我读过一篇文章,题目是,它使用DLL代理截获调用,可以为DirectX获得覆盖

我正在编写一些DirectX应用程序,不希望其他人通过此方法更改它。我怎样才能防止这种情况

我可以通过检查原始DLL来完成吗?如何执行?

只需检测应用程序工作目录中的d3d9.DLL(所有DX DLL)文件,如果存在,则有人试图代理。它很容易实现。无论如何,你不能让某些东西100%受到保护,因此任何比这更复杂的东西都不值得投入时间:)

我设法从所有游戏中获取数据,它们有数百万的预算:)

检测它是否是代理的“最简单”方法是确定加载的d3d9.dll的路径,计算散列并将其与存储的散列进行比较。但这只在他们让你的应用程序加载d3d9代理dll的情况下有效,而在他们钩住/注入的情况下无效。

谢谢你,JAre。如果检测到d3d9.dll,如何检查其版本或功能?你能告诉我一些关于它的文章吗?@wenz据我所知,要拦截调用(例如对d3d9.dll的调用),你需要将代理“d3d9.dll”放在应用程序目录中,因为应用程序(和DX框架)通常开始从应用程序目录搜索包含的dll,你的应用程序将加载代理“d3d9.dll”。因此,通过禁止应用程序文件夹中的任何第三方文件或库,您可以保护应用程序不受平台无关的基本代理的影响。如果他们将代理dll放在windows dll文件夹中,则在工作目录中检测将失败。