我读过一篇名为Intercept Calls to DirectX with a Proxy DLL的文章,它使用 DLL Proxy 拦截调用,并且可以获得 DirectX 的覆盖。
我正在编写一些 DirectX 应用程序,不希望其他人通过这种方法更改它。我怎样才能防止这种情况?
我可以通过检查原始 DLL 来做到这一点,以及如何做到这一点?
我读过一篇名为Intercept Calls to DirectX with a Proxy DLL的文章,它使用 DLL Proxy 拦截调用,并且可以获得 DirectX 的覆盖。
我正在编写一些 DirectX 应用程序,不希望其他人通过这种方法更改它。我怎样才能防止这种情况?
我可以通过检查原始 DLL 来做到这一点,以及如何做到这一点?
检测它是否是代理的“最简单”方法是确定加载的 d3d9.dll 的路径,计算哈希并将其与存储的哈希进行比较。但这仅在他们让您的应用程序加载 d3d9 代理 dll 的情况下有效,而不是在他们挂钩/注入的情况下有效。
只需在您的应用程序工作目录中检测 d3d9.dll(所有 DX dll)文件,如果存在则有人试图代理。这很容易实现。无论如何,你不能让一些东西得到 100% 的保护,所以任何比这更复杂的东西都不值得花时间投资 :)
我设法从所有使用3D Ripper DX的游戏中获取数据,他们有数百万的预算 :)