如何在 C# 中调试时伪造或作弊未在调试模式下运行的内容

本文关键字:调试 模式 运行 伪造 | 更新日期: 2023-09-27 18:35:38

我正在开发C# winforms应用程序。

它有一个带有 WebBrowser 控件的窗体。

此 Web 浏览器控件应导航某个网页。

这个网页有一个activex应用程序。

问题是当我调试我的 C# 应用程序时,activex 会发现它并说:"您正在将本网站与调试程序连接。请关闭调试器。

它只会杀死我的应用程序。

我认为他们正在检查我正在运行 msvsmon.exe 或 vshost32.exe 的过程天气。

有没有人有任何想法来欺骗这个 activex 应用程序?

如何在 C# 中调试时伪造或作弊未在调试模式下运行的内容

使用监视工具监视所有系统 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 控件的调用。 这样,调试器在执行该代码时将不会处于活动状态。

不确定它是否有效,但尝试一下也无妨。