我们手上只有病毒木马编译后的二进制文件,没有源码!所以,要想获取上述信息,只能通过逆向技术,反汇编二进制文件,得到汇编代码;然后阅读汇编代码,一点点去理解程序的意图和执行逻辑。逆向其实很简单,就是看汇编代码;但是也很难,因为汇编代码很底层,只用少数的一两百条指令来表示我们程序千千万万不同的语义,所以理解起来会非常的抽象!需要耐心、专注的人才能做到。但,任何事情都是入门时候很难,一旦你熟练、习惯后,看汇编代码就像看高级语言一样通俗易懂!等到这时候,任何程序在你面前,都不再有秘密!
常用的两个逆向工具:一个是静态反汇编工具IDA、一个是动态反汇编工具OllyDbg,静态和动的区别就在于静态不需要运行程序,直接扫描就可以得到反汇编代码,好处就是即使程序有损坏不能运行,也可以进行反汇编;动态是会加载到内存执行,对内存数据进行反汇编,所以这就要求程序必须能够加载运行起来,动态反汇编的好处就是我们能跟着程序执行逻辑并进行调试。
IDA
再来看下动态反汇编工具OllyDbg,也是打开个PE文件,大家可以看到,现在程序已经被加载到内存运行起来了,这个显示的是它的内存地址,旁边还有相应寄存器的状态,对应的值;我们可以对汇编代码修改内存的值、下断点进行调试等,大大提升逆向分析的效率。
当然,我们还可以利用一些辅助工具来提升我们的分析效率:
CFF Explorer