在前文《不传之密:杀毒软件开发,原理、设计、编程实战》中,讲述了基于特征码的杀毒软件开发。本文作为继章,将继续介绍杀毒软件开发:感染型病毒的查杀。
编程殿堂中,工作无贵贱,但技术真有高低。在黑暗领域,PE感染型病毒历久以来处于技术金字塔的顶端,长久以来都蒙着一层神密的面纱。但要想编写能查杀感染型病毒的杀毒软件,对这种感染型病毒的编程是必须要了解的。
一般来说,PE感染型病毒,会感染电脑中的可执行文件,一旦被此类病毒入侵,很难清除,在以往通常都只能选择重装系统,可见其危害性。
感染型病毒开发,需要对PE文件格式、C、汇编、系统内核等方面知识,有相当了解。
“感染型病毒”开发那么,就让我们通过实例,写一个“病毒”来真实了解一下其开发过程:
注:这不是一个真的病毒,此程序运行时会“感染”EXE文件,给其增加一个新“节”,被“感染”的文件启动时,会发出“哔”的一声,仅此而已,演示而用、并无危害。
//包含必要的头文件#includewindows.h#includewinnt.h#includestdio.h#includeassert.h//常量定义#defineDEBUG1#defineEXTRA_CODE_LENGTH18//增加的节的大小#defineSECTION_SIZE0x//增加的节的名字,设置为:.test#defineSECTION_NAME".test"//文件名最大长度(包括路径)#defineFILE_NAME_LENGTH30//数量对齐函数intAlign(intsize,intALIGN_BASE){intret;intresult;assert(0!=ALIGN_BASE);result=size%ALIGN_BASE;//余数不为零,也就是没有整除if(0!=result){ret=((size/ALIGN_BASE)+1)*ALIGN_BASE;}else{ret=size;}returnret;}//工具使用方法voidusage(){printf("Ty2y杀毒软件(