PE感染逆向之修复

本文详细介绍了如何分析和修复PE(Portable Executable)文件被Serverx.exe病毒感染的过程。作者通过研究发现,病毒通过增加最后一个区段大小并写入shellcode实现感染,而被感染文件的功能并未受损。关键在于找到原始文件大小和入口点,通过搜索shellcode特征确定文件被感染部分,从而修复文件。修复方法包括恢复文件大小、修正区段数据、计算新的映像大小和入口点。修复后的文件与原始文件只有少量差异,修复效果良好。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作 者: achillis

这篇文章是在Servex.exe专杀工具写完之后的一些小小感想,关于PE感染和修复,
  自某日不小心中了Serverx.exe病毒,电脑中大部分EXE文件被感染,系统盘system32目录下的病毒文件Serverx.exe总也杀不掉,因为即使删掉了,每次运行了被感染的程序之后还会再次生成。(关于此毒的详细资料,有兴趣的直接在百度搜索"Serverx.exe"或"愤怒天使"即可)在网上求助无果,遂自己动手,研究了一下这个病毒的感染方式,最终找到了恢复被感染文件的方法,下面将此过程分享给大家。

遇到这种感染型的病毒,恢复时需要解决几个问题。
第一个问题,感染后的文件能否恢复?

那么我们从被感染后的EXE运行情况来看看。以调用Winrar解压缩为例,可以正常实现解压过程。但在解压后就应退出的Winrar仍在运行。如果用Process Explorer观察进程树的话,会发现是Winrar本身又重新运行了一个Winrar进程来完成解压缩功能,而解压完成后,第一个运行的Winrar仍在继续运行,用FileMon监视的话会发现它有大量的文件访问操作,从访问的目录顺序和规律来看是在遍历并寻找EXE进行感染。而这两个Winrar的路径是一样的,也就是说实现感染功能的和实现解压功能的是同一个程序,解压功能仍然是被感染后的Winrar完成的,这说明一个问题:感染后的文件功能没有被破坏!这非常重要,也是因为程序的功能没有被破坏才有下面的恢复过程。

第二个问题,此病毒是何种感染方式?
典型的感染方式有“夹心饼”式的捆绑感染,替换资源或添加资源式的感染,准确说这些不算是“正宗”的PE感染。其它典型的方式有加新区段,写入shellcode(这里把病毒自己注入的代码也称为shellcode),然后跳回原入口。还有一些高级的感染方式,不一一列举。
为了分析这个病毒的感染方式,我将感染前后的Winrar.exe进行对比,首先会发现文件大小要增加,再用PEID(或其它同类工具)查看一下相关数据,首先发现入口所在区段不一样了,由.text段变成了最后的.rsrc段,入口处代码也不一样了。既然感染跟区段有关,那么就来看一下感染前后区段数据的变化:
感染前: 
名称:  区段_感染前.jpg
查看次数: 265
文件大小:  28.0 KB
感染后: 
名称:  区段_感染后.jpg
查看次数: 263
文件大小:  28.0 KB
可以看到,区段数并没有增加,仍为7个,但是最后一个区段的虚拟大小(VirtualSize)和原始大小(RawSize)都有所增加,且段属性标记也被修改了。这样我们对此病毒的感染方式有所了解了,就是增加最后一个段的大小,写入shellcode,并修改段属性为可执行,并不是某些人分析的增加新区段方式。具体地把一些数据列出来并进行计算(所有数据都是Winrar.exe的):
感染前文件大小:929792 Bytes   感染后:974742 Bytes  增加:44950=0xAF96
感染前最后一个节的数据:
VirtualSize:0x00032000   RawSize:0x00031200   Flags:0x40000040
感染后最后一个节的数据:
VirtualSize:0x0003C196   RawSize:0x0003C196   Flags:0xE0000040
增加的大小&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值