我有一个试图用dnSpy调试的dotnet恶意软件示例。它具有字符串混淆(包含函数名称,例如BarriersBottomed等),我使用de4dot清理了示例,并重命名了函数以使其更易于理解。

我在Main上放置了一个断点,并在调试中指定了设置在Entry Point处中断,但是该程序永远不会达到断点。当我单击Start时,它运行了几秒钟,然后出现dnSpy错误:

An unhandled exception occurred in kahjvb-cleaned.exe (2160)
Exception: ???
Message: "<no exception message>"


因此,在Debug选项中,我检查了Ignore unhandled exceptions并重新开始调试具有与以前相同的选项。现在,调试器仅运行几秒钟,调试过程完成。它仍然没有达到断点。

以前有人遇到过此类问题吗?或者对此问题是否有见识?感谢您的帮助!

评论

如果不研究此特定二进制文件,可能很难提出任何建议。

#1 楼

调试“清除的”二进制文件通常很困难。许多清理技术将使您留下格式错误的二进制文件,该二进制文件易于“读取”,但无法正确执行。我建议静态分析“清除”版本,然后使用您学到的知识调试原始版本。

评论


是的,那就是我最终要做的。谢谢!

– Nikhil
19年5月1日在13:12