基于数据科学的恶意软件分析
上QQ阅读APP看书,第一时间看更新

2.3 使用pefile和capstone反汇编ircbot.exe

既然你已经很好地了解了汇编语言的基础知识,那么让我们使用线性反汇编技术来反汇编ircbot.exe汇编代码的前100个字节。为此,我们将使用开源Python库pefile(已在第1章中介绍过)和capstone,这是一个可以反汇编32位x86二进制代码的开源反汇编库。你可以使用pip安装这两个库,具体命令如下:

安装了这两个程序库之后,我们可以利用它们并使用代码清单2-2中的代码来反汇编ircbot.exe。

代码清单2-2 反汇编ircbot.exe

这个过程应该产生以下输出:

不要担心去理解反汇编输出中的所有指令:这里涉及的对汇编代码的理解已经超出了本书的范围。但是,你应该对输出中的许多指令有所认识,并对它们的作用有一定的了解。例如,恶意软件将寄存器EBP中的值压入堆栈❶,并保存其值。然后将ESP中的值移动到EBP中,并将一些数值压入堆栈。程序将内存中的一些数据移入寄存器EAX ❷,并对寄存器ESP ❸中的值添加-0x5c。最后,程序使用call指令调用存储在内存地址0x496308 ❹上的函数。

因为这不是一本关于逆向工程的书,所以我在这里不再深入讨论代码的含义。我所介绍的是理解汇编语言如何工作的开始。有关汇编语言的更多信息,我推荐使用英特尔程序员手册,网址为http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html