DOS时代的病毒采用在可执行文件首部插入Jmp 跳到自己添加的恶意代码中。WIN32病毒同样在文件中添加代码,通常是通过插入新的节,然后直接修改PE文件的入口点。这样没有添加任何JMP语句就能执行植入到EXE文件中的代码了。杀毒软件的查杀方式很简单,发现PE文件的入口点不在代码段,就认为感染了病毒。所以这种方式已经存活不下去了。 这时引入了EPO技术。病毒仍然是在可执行文件中添加一个新的节。但是要执行该节的方式不是普通的直接修改入口点指向该节来执行。而是在可执行文件中搜索JMP或CALL调用,将JMP或CALL的目的地址改成恶意代码所在的地址。很多病毒都采用了这种方式。 最显而易见的查杀方式是发现某个可执行文件原本在执行代码段,中途却跳到其他段去执行。毕竟大多数可执行文件都是只执行代码段的。那为何说这种方式能躲避一部分杀软的查杀呢? 因为让杀软去搜索整个可执行文件的代码并判断目标地址是否是其他节的工作量太大。很多杀软都不会这么操作的。这样去感染也不会有明显的特征码。因为病毒对不同的可执行文件patch不同的函数。patch的位置各不相同。所以可以认为,病毒的入口被模糊化了。 鉴于此,我认为病毒EPO技术还是挺有用的。 不知道有没有其他能够执行植入的恶意代码的方法,欢迎讨论
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
那为何说这种方式能躲避一部分杀软的查杀呢?