是否可以抑制第三方 DLL 的详细调试输出?我的调试输出窗口充满了它们。我无法修改有问题的 DLL。
我认为没有任何简单的方法可以做到这一点。
一种方法可以以任何方式工作是API挂钩(或函数挂钩)。有不同的方法可以做到这一点。
如果要拒绝导入调试输出的 DLLOutputDebugString
直接使用函数(使用dumpbin /imports thedll.dll
) 一罐补丁PE导入地址表 (IMAGE_THUNK_DATA
)内存中的 DLL 指向对不执行任何操作的虚拟函数的引用。
如果您不确切知道第三方 DLL 使用了哪些 API,您可以使用代码覆盖技术使得代码OutputDebugString
进程内存中的函数将被更改(JMP 或 CALL 指令),以便调用您的函数,您的代码可以检查调用堆栈,如果第三方 DLL 在内部,您将无能为力。如果您在调用堆栈上找不到第三方 DLL,您可以将调用转发到原始实现OutputDebugString
.
这两种描述技术都用于 DLL 注入。对于您的情况,您有更简单的情况,因为您需要在自己的流程中进行更改,因此不需要特殊的用户权限。
所有描述的技术并不像我在答案开头所写的那样简单。我在答案的开头写道,我认为不存在任何简单的方法。另一方面,您不需要自己实现上述所有内容。您可以在互联网上找到足够多计算机语言的代码示例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)