如何在 C# 中调试时伪造或作弊未在调试模式下运行的内容
本文关键字:调试 模式 运行 伪造 | 更新日期: 2023-09-27 18:35:38
我正在开发C# winforms应用程序。
它有一个带有 WebBrowser 控件的窗体。
此 Web 浏览器控件应导航某个网页。
这个网页有一个activex应用程序。
问题是当我调试我的 C# 应用程序时,activex 会发现它并说:"您正在将本网站与调试程序连接。请关闭调试器。
它只会杀死我的应用程序。
我认为他们正在检查我正在运行 msvsmon.exe 或 vshost32.exe 的过程天气。
有没有人有任何想法来欺骗这个 activex 应用程序?
使用监视工具监视所有系统 API 调用。查看是否调用了kernel32!IsDebuggerPresent
。
如果你能找到一种方法将程序集注入到可执行文件中,你可以使用它,虽然我还没有弄清楚,所以我无法测试你的程序是否仍然可以调试(它应该):
mov eax, fs:[30h]
mov byte [eax+2], 0
来源: http://www.symantec.com/connect/articles/windows-anti-debug-reference
他们几乎肯定没有检查 msvsmon 或 vshost32。 有一个简单的 API 调用来测试您是否在调试器下运行。 这可能是他们所说的,如果你不是一个严肃的高级内核黑客,就没有办法解决这个问题。
可以考虑使用 [DebuggerStepThrough] 属性包装对 WebBrowser 控件的调用。 这样,调试器在执行该代码时将不会处于活动状态。
不确定它是否有效,但尝试一下也无妨。