如何反汇编打包的 .NET 可执行文件?

逆向工程 拆卸 。网 包装工
2021-07-04 02:55:50

我正在尝试反转显示为已打包的 Windows 可执行文件ENIGMA(5.X)

在此处输入图片说明

如果我稍后检查其 UI 元素之一的类名,则当进程解压缩并运行时,它显示为 .NET 类WindowsForms10.BUTTON.app.0.378734a

在此处输入图片说明

但是,如果我再附上与dnSpy这个过程中,我可以暂停.NET可执行某处System.Windows.Forms.dllApplication-UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop()功能,但似乎有从目标过程本身的.NET程序集没有资料:

在此处输入图片说明

我的目标是Start在该应用程序中单击按钮后查看 .NET 代码知道我应该如何进行吗?

2个回答

好的,我想我明白了。我需要的工具是MegaDumper. (我在它的 Github上找不到可执行文件,所以我不得不自己构建它。)

然后这是我如何使用它的步骤:

  1. (我显然是在 VM 中完成所有这些操作。)启动打包的可执行文件并让它自行解包。(就我而言,它是一个 GUI 应用程序,因此它继续运行。)

  2. 启动 MegaDumper 并在列表中找到 .NET 进程(此时它已经在内存中解包了)。

  3. 右键单击它并选择.NET dump,稍等片刻,它将在与转储的 .NET 文件相同的位置创建一个文件夹。

    在此处输入图片说明

  4. 然后只需打开转储文件夹中的 .exe 即可dnSpy正常反汇编它,因此您可以放置​​断点并对其进行调试:

在此处输入图片说明


最后,我只想说,乍一看,有问题的打包 .NET 可执行文件似乎不是恶意的。多辆AV报告很可能是由于使用俄罗斯包装机造成的。因此,对于决定打包合法软件的开发人员来说,这可能是一个线索。(只是说...)

按“暂停”后,您将进入消息循环 - 没关系。转到调用堆栈窗口,您应该会在前一帧中看到您的二进制文件。双击其中之一,dnSpy 应该加载它并进行分析。

但是由于二进制文件已打包(并且可能被混淆),我认为您需要先解压缩它并运行此版本,以便正确地将指令映射到行。