欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

使用IDA解密恶意软件

程序员文章站 2022-03-06 15:37:33
本文由by Dennis Elser发表   当今的恶意软件几乎都被加了壳的,可执行文件被压缩或标准加密,标准加密是有次序的来使代码和数据混淆,在一些病毒里面脱壳和转存是非常有效...
本文由by Dennis Elser发表
 
当今的恶意软件几乎都被加了壳的,可执行文件被压缩或标准加密,标准加密是有次序的来使代码和数据混淆,在一些病毒里面脱壳和转存是非常有效的办法,在一些为数不多的病毒中他们实际上的工作方式是在外壳中装入恶意软件适当的改变内部结构例如PE头,
 
下面实例中陌生的二进制代码是装进IDA Pro后产生的,这个实例对应的可执行入口点看起来好像这样:
 使用IDA解密恶意软件
 
区段一的名称是“UPX1”,一个无效的输入地址表和空的的输入表,一系列的东西是由一个外壳文件来指示。另一方面,不能脱壳这个文件是应为文件的内部结构已经被变形,这个手段经常是由恶意软件的作者用来增大脱壳的难度和逆向工程的难度。
 
首先,现在我们第一步是要获得外壳壳可执行文件清晰的镜像,实现这个过程最好的和最快速的方法是运行可执行文件和抓取先前例子外壳段的内存镜像,一次抓取和脱壳,抓取内存镜像成功后彻底脱壳文件在储存。这过程经常被病毒作者修改用来防止我们我们到达程序入口点,查找OEP总是很无趣的,可以说是一个时间消耗过程;因为我们需要把代码从头到尾单步一遍。利用IDA Pro SDK的一个插件(名字为“EPF”(Entry Point Finder))可以自动化帮助我们来创建和完成这个查找OEP过程,
 
 
 
现在,我们小心的在一个独立的环境(虚拟计算机实例)IDAPro调试器中运行可执行文件,
 
使用IDA解密恶意软件
 
上面显示的指示器(EIP)指向一个“pusha”助记符的扩展指令。这个指令被使用于第一条指令来储存所有标准寄存器的内容,多数的可执行压缩文件使用一个“popa”指令来结束代码和恢复到在储存标准寄存器的内容之前的状态。这个行为可以利用EPF插件,EPF插件提供一个选项来允许在IDA Pro调试器查找代码,直到指定助记符被获得。
 


使用IDA解密恶意软件
 
随后EPF插件从开始的地方进行查找,这个过程可以重新开始(简要说明:在你的主机系统切勿运行恶意软件)。然后,等待一会,这个查找过程就暂停了和EPF转向目标地方,下
 
面是消息显示:
 使用IDA解密恶意软件
 
代码指示器指示EIP指向一个“popa”助记符,接着由一个跳转来结束代码过程和开始程序部分
 

使用IDA解密恶意软件

 
单步到JMP引导我们显示下面的消息框:


使用IDA解密恶意软件
选择“YES”创建一个EIP指示我们进入控制流程和IDA Pro开始分析控制流程
 
 
使用IDA解密恶意软件
EIP现在指向一个名字为“UPX0”的区段,这大概是原来的入口点,现在这个地方是最适合用来抓取内存镜像,下面是“DumpSeg”插件列表目录和抓取所有有用的部分。
抓取之后可以保存到磁盘并装入IDA Pro中开始分析。

使用IDA解密恶意软件
 
参考:
 
1.) IDA Pro, DateRescue (http://www.datarescue.com/idabase)
 
2.)UPX, Markus F.X.J. Oberhumer & Laszlo Molnar
 
3.) EPF, Dennis Elser (http://www.backtrace.de)
 
4.)DumpSeg, Dennis Elser (http://www.backtrace.de)