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
病毒还可以将自己分散插入到每个节的空隙中等
|
学习笔记:病毒感染PE文件的基本方法
最新推荐文章于 2021-11-22 15:40:57 发布
2007-06-27 02:40