![基于数据科学的恶意软件分析](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=1739375812-Jcr1tWYuMjQi97jZtgeDaFRhBBsX5pC5-0-ec6c9cc4725409060261c89f75d7d239)
安装了这两个程序库之后,我们可以利用它们并使用代码清单2-2中的代码来反汇编ircbot.exe。
代码清单2-2 反汇编ircbot.exe
![](https://epubservercos.yuewen.com/8500D2/16523728605659606/epubprivate/OEBPS/Images/figure_0038_0002.jpg?sign=1739375812-CuBTPNFUR3IYLvrXDuNJvfJsg9zbwDUD-0-e56fb64dc2f8f874d80a7c79b2fd6a5d)
这个过程应该产生以下输出:
![](https://epubservercos.yuewen.com/8500D2/16523728605659606/epubprivate/OEBPS/Images/figure_0038_0003.jpg?sign=1739375812-5wd8NKtFC74b7NKc1oyjKprNqFHdROvG-0-402b12406cee4900c80da65494df71d7)
不要担心去理解反汇编输出中的所有指令:这里涉及的对汇编代码的理解已经超出了本书的范围。但是,你应该对输出中的许多指令有所认识,并对它们的作用有一定的了解。例如,恶意软件将寄存器EBP中的值压入堆栈❶,并保存其值。然后将ESP中的值移动到EBP中,并将一些数值压入堆栈。程序将内存中的一些数据移入寄存器EAX ❷,并对寄存器ESP ❸中的值添加-0x5c。最后,程序使用call指令调用存储在内存地址0x496308 ❹上的函数。
因为这不是一本关于逆向工程的书,所以我在这里不再深入讨论代码的含义。我所介绍的是理解汇编语言如何工作的开始。有关汇编语言的更多信息,我推荐使用英特尔程序员手册,网址为http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html。