我正在开发 C# winforms 应用程序。
它有一个带有 WebBrowser 控件的表单。
此 WebBrowser 控件应导航某个网页。
这个网页有一个activex应用程序。
问题是当我调试我的 C# 应用程序时,activex 发现它并说:“你正在用调试程序连接这个网站。请关闭你的调试器。”
它只会杀死我的应用程序。
我认为他们正在检查我正在运行 msvsmon.exe 或 vshost32.exe 的进程天气。
有谁知道欺骗这个activex应用程序?
我正在开发 C# winforms 应用程序。
它有一个带有 WebBrowser 控件的表单。
此 WebBrowser 控件应导航某个网页。
这个网页有一个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 控件的调用。这样,当该代码执行时,调试器将不会处于活动状态。
不确定它是否会起作用,但尝试一下不会有什么坏处。