Virus Infecting Portable Executable File (3)
【原理篇】
病毒要感染EXE文件,也就是把自身插入EXE中,并在执行原先程序指令之前执行自身。这个教程并不能完成一个完整的病毒程序,而只是将自己的一段指令插入在EXE文件中,并优先于原先程序执行。
此篇讲解完成上述目标的原理,所需要的知识是"基础篇"中的一个子集。
由于PE文件会对Section进行对齐,因此一般会在程序段后面留下一些空白空间。这些空间可以用来插入我们自己的代码,也可以是病毒滋生的空间,这样,被"感染"的文件的大小不会改变,大部分结构也没有变化,直接跳转到适当位置覆盖写入即可进行感染。
在空白处插入你的代码并不会执行,更不可能在原程序之前执行。其原因有2:
1. 程序入口仍然是原入口,执行的流程依然是首先执行原程序
2. 每个Section都会有有效长度,超出部分Image Loader会直接忽略掉
因此我们加入的代码和填充的"0"没有什么区别。
为了达到抢先执行我们自己的代码的目的,我们需要:
1. 更改程序入口地址
2. 更改代码段的Section Length字段
3. 为了执行我们自己代码以后还能够回头去执行原程序,我们还需要在代码后面加上跳转指令,跳转到原先的程序入口
基于上述原理,在下篇中我们具体讲解实际的操作过程。
No comments:
Post a Comment