9

我一直在想——如何反汇编自修改二进制文件?我猜您不能使用 olly 或 IDA,因为它们是静态反汇编程序,对吗?如果你跳到指令的中间,反汇编程序会发生什么?以及如何分析变质引擎?

4

2 回答 2

10

OllyDbg 和 IDA 不仅是静态分析器,它们都可以运行代码。IDA 还可以远程运行您的代码,据我所知,它甚至可以进行嵌入式调试。当然,如果您在某个时候“中断”程序执行,并查看反汇编,它将(在两个程序中)反映程序的当前状态,包括它对自身所做的任何修改。

如果你跳到指令的中间,反汇编程序会发生什么?

根据我的经验,上述两种反汇编程序都可以处理这种情况。比如看这里,OllyDbg是怎么管理的,这里是EIP为00892C0E时的截图:

之前的 OllyDbg

当我使 EIP = 00892C0F 时,它位于指令的中间:

OllyDbg 之后

如您所见,它只是重新反汇编指令,使其成为不同(但仍然有效)的操作码。

以及如何分析变质引擎?

就像任何其他代码一样。您提到的技巧(跳转到指令的中间,修改自身)在不久前主要流行,当时反汇编器和调试器不像现在那么聪明。

当然静态分析可能非常困难,但您当然仍然可以完全离线分析二进制文件并破译“变形”(在您的脑海中)以了解代码将做什么。但是,当您可以实时使用调试器时,您就可以简单地看到代码在做什么。

当然,所有这一切都是编写代码的人和分析代码的人之间的无休止的竞赛。谁赢取决于谁更早放弃。

于 2012-04-25T18:52:38.710 回答
2

Ollydbg 将处理这种情况。

您正在寻找的功能是“分析”。它将重新反汇编该位置的新指令,并使用更新的代码刷新 CPU 窗口。

假设地址 X 处的指令将进行一些自修改更改。执行该指令后,您可以运行“分析”命令。这是围绕该基本块重新反汇编代码并使用更新的指令刷新 CPU。

要进行分析,请右键单击 CPU 窗口中的所需位置,然后单击 Analysis> Analyze Code。快捷方式是Ctrl-A

于 2012-04-25T21:05:02.943 回答