学习笔记:病毒感染PE文件的基本方法

107 篇文章 1 订阅
107 篇文章 0 订阅
2007-06-27 02:40

PE病毒常见的感染其它文件的方法是在文件中添加一个新节,然后往该节中添加病毒代码和病毒执行后返回HOST程序的代码,并修改文件头中代码开始执行位置(Address Of EntryPoint)指向新添加的病毒节的代码入口,以便程序运行后先执行病毒代码。下面具体分析一下感染文件的步骤。

感染文件的基本步骤:

1,  判断目标文件开始的两个字节是否为“MZ”。

2,  判断PE文件标记“PE”

3,  判断感染标记,如果已被感染过则跳出继续执行HOST程序,否则继续。

4,  获得Directory(数据目录)的个数,每个数据目录信息占8个字节。

5,  得到节表起始位置:

       Directory的偏移地址+数据目录占用的字节数=节表起始位置

6,  得到目前最后节表的末尾偏移(紧接其后用于写入一个新的病毒节)。

节表起始位置+节的个数×(每个节表占用的字节数28H)=目前最后节表的末尾偏移

7,  开始写入节表。

l  写入节名(8B)。

l  写入节的实际字节数(4B)。

l  写入新节在内存中的开始偏移地址(4B),同时可以计算出病毒入口位置。

上节在内存中的开始偏移地址+(上节大小/节对齐+1)×节对齐=本节在内存中的开始偏移地址

l  写入本节(即病毒节)在文件中对齐后的大小。

l  写入本节在文件中的开始位置。

上节在文件中的开始位置+上节对齐后的大小=本节(即病毒)在文件中的开始位置

l  修改映象文件头中的节表数目。

l  修改Address Of EntryPoint,同时保存旧的Address Of EntryPoint,以便返回HOST继续执行。

l  更新Size Of Image(内存中整个PE映象尺寸=原Size Of Image+病毒节经过内存节对齐后的大小)

l  写入感染标记

l  写入病毒代码到新添加的节中:

ECX=病毒长度

ESI=病毒代码位置(并不一定等于病毒执行代码开始位置)

EDI=病毒节写入位置

l  将当前文件设置为文件结尾。

PE 病毒感染其它文件的方法还有很多,例如 PE 病毒还可以将自己分散插入到每个节的空隙中等
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值