![基于数据科学的恶意软件分析](https://wfqqreader-1252317822.image.myqcloud.com/cover/783/30060783/b_30060783.jpg)
上QQ阅读APP看书,第一时间看更新
2.3 使用pefile和capstone反汇编ircbot.exe
既然你已经很好地了解了汇编语言的基础知识,那么让我们使用线性反汇编技术来反汇编ircbot.exe汇编代码的前100个字节。为此,我们将使用开源Python库pefile(已在第1章中介绍过)和capstone,这是一个可以反汇编32位x86二进制代码的开源反汇编库。你可以使用pip安装这两个库,具体命令如下:
![](https://epubservercos.yuewen.com/8500D2/16523728605659606/epubprivate/OEBPS/Images/figure_0038_0001.jpg?sign=1738799712-euME6CWglNHdSITTJB7TpKqtcrYxSO7b-0-44206cd857f38efc76b9d3d95147715e)
安装了这两个程序库之后,我们可以利用它们并使用代码清单2-2中的代码来反汇编ircbot.exe。
代码清单2-2 反汇编ircbot.exe
![](https://epubservercos.yuewen.com/8500D2/16523728605659606/epubprivate/OEBPS/Images/figure_0038_0002.jpg?sign=1738799712-26JkEszZbSdCoVxa9zzGszZx1yCCEXvF-0-b25d78616d60762c4d17dff011f1a21b)
这个过程应该产生以下输出:
![](https://epubservercos.yuewen.com/8500D2/16523728605659606/epubprivate/OEBPS/Images/figure_0038_0003.jpg?sign=1738799712-kc71wQ2lVfjpmn9y5OVi4h18dmsDo4fK-0-66eda15695f08b53d86ab1256633df33)
不要担心去理解反汇编输出中的所有指令:这里涉及的对汇编代码的理解已经超出了本书的范围。但是,你应该对输出中的许多指令有所认识,并对它们的作用有一定的了解。例如,恶意软件将寄存器EBP中的值压入堆栈❶,并保存其值。然后将ESP中的值移动到EBP中,并将一些数值压入堆栈。程序将内存中的一些数据移入寄存器EAX ❷,并对寄存器ESP ❸中的值添加-0x5c。最后,程序使用call指令调用存储在内存地址0x496308 ❹上的函数。
因为这不是一本关于逆向工程的书,所以我在这里不再深入讨论代码的含义。我所介绍的是理解汇编语言如何工作的开始。有关汇编语言的更多信息,我推荐使用英特尔程序员手册,网址为http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html。