杀毒软件的预处理研究.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
杀毒软件的预处理研究,数据预处理的方法,数据的预处理,图像预处理的目的,c语言的预处理过程,预处理的作用,样品预处理的方法,图像的预处理,发酵液的预处理,复用?2760?械的预处理

相信大家看过了前两期文章,已经对简单的查毒引擎的工作和PE文件格式有了一定程度的了解。但这些只是为了说明问题而制作的Demo工程。作为一个真正的杀毒软件, 工作起来是更为复杂的。拿到一个文件不论三七二十一就开始查,不论从效率还是效果方面来说,都是不能接受的。要先对这个文件进行一定的预处理工作。因为对 于一个文件可能存在很多种情况,它可以包含多个文件,比如说压缩包,或者是邮件MIME编码过的文件等等,也可能是经过打包的可执行程序,在这些文件里面,可能还包涵其他的压缩包或者编码的复合文件。杀毒软件在对文件进行了预处理之后,才能更有效的对文件进行病毒扫描工作。 大家不要认为预处理是不重要的,其实在杀毒软件中预处理是一件比较复杂也是非常重要的事情。一个好的预处理工作,可以使杀毒软件在面对经过了某些变化的病毒的时候游刃有余,大大增强一个杀毒软件的查毒数量和杀毒能力。 预处理的工作类型 那么,预处理到底都要做哪些事呢?大体来说来说,杀毒软件的预处理过程主要由两个阶段组成,第一阶段对文件格式进行识别,如果可以正常识别出文件格式, 我们就可以判断是否需要进行病毒扫描。判断完格式后进入第二个阶段,第二阶段根据第一阶段传过来的文件格式,选择相应的处理程序。例如,对于压缩包我们就 需要根据压缩包的格式进行解压操作,对于经过了加壳的文件,就调用脱壳的处理函数等等。 对于加壳的概念,读者如果不明白没有关系,下期我们会详细的介绍。 经过以上处理后,杀毒软件才会对处理后的内容扫描病毒。下面结合本次我们的代码来介绍以上的几个预处理步骤。由于预处理内容较多,篇幅所限,本次我们只 介绍文件格式识别部分和解压缩处理部分。同时为了使我们的杀毒引擎的工程更接近一个真正的工程,我们将工程结构进行了较大的重新整合,加入预处理的部分。 本次的升级改动较大,读者在看代码时就能感受到。 代码的变化 以前的所有的功 能都放在一个项目中,这样不便于多人的协同开发,当我们的引擎功能越来越复杂的时候,就会发现很难进行协作开发,同时也不便于维护。这次,我们将整个工程 变成了六个项目,日后,随着功能的扩展,我们还要不断往工程中增加新的项目,比如用于脱壳的项目,用于MIME编码处理的项目等等。 ConsoleUI是实现了我们以前的代码中Bav.cpp文件实现的内容,用于接受输入、输出扫描结果。同时ConsoleUI还要起到调用引擎的作用。我们引擎的界面现在还是控制台界面,读者如果有兴趣可以自己增加图形界面(MFCUI 甚至QtUI)。 VirusDB的代码大体上与我们的杀毒软件前两个版本类似。 FileOperate项目是对文件操作的包装。可以把它看作是一个跨平台的文件操作包装类,与反病毒并没有直接关系,不过目前只实现了win32部 分。本工程所有的内部文件操作都是通过FileOperate来实现,这样可以保证我们的工程有很好的跨平台性。FileOperate是以 FileObject 类为基类进行继承或多层继承。现阶段内有关文件操作的共有4个类,分别为CFileObject,CPhyFileObject, MemFileObject和CTxtFileObject。 其中CTxtFileObject 派生于CMemFileObject。CMemFileObject派生于CPhyFileObject, CPhyFileObject 派生于CFileObject。这次 一 个比较大的变化就是区分了扫描对象(CScanObject)和文件对象(CFileObject),文件对象如上所述,是和反病毒没有直接关系的,而扫 描对象是和反病毒直接相关的。文件对象也不再从扫描对象派生,CFileObject 成为文件操作的基类。每个扫猫对象里面包含一个可以被扫描的文件对象,可以是物理文件对象(CPhyFileObject)或者是内存文件对象 (CMemFileObject)。和反病毒相关的操作,例如Compare()就封装在扫描对象中。 在CEngine 类中,从现在开始,我们需要区分ScanOneFile()和ScanOneObject()。ScanOneFile()是比较原始的级别,用来预处理 通过文件遍历得到的单个文件,分析文件格式、解压缩。当预处理完成后,所有需要扫描的对象都被包装成了一个扫描对象(CScanObject)然后交给 ScanOneObject()进行真正的扫描工作。 在ScanOneFile()中,我们用了一个堆栈来跟踪状态。每个栈顶的文件 被取出来分析文件格式,如果是可执行的,就进行查毒,如果是压缩的,就解压缩。解压缩出来的文件形成新的内存文件对象,压入堆栈,等待处理。解压工作目前 没有判断被解压的文件大小是否合适存放在内存中,这在将来需要改进,否则会被病

文档评论(0)

tianma2015 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档