计算机病毒原理及防范技术王路群电子教案 第5章 windows病毒解析.pptVIP

计算机病毒原理及防范技术王路群电子教案 第5章 windows病毒解析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机病毒原理及防范技术 第5章 Windows病毒解析 教学要求: 理解:Windows环境下病毒的分类和特点,一般的几种病毒编写方法。 掌握:WIN 32PE病毒,VBS脚本病毒,宏病毒,网页病毒原理及防范。 5.1 Win 32 PE 病毒原理 DOS时代,程序员为了获得程序的高性能或直接控制硬件而用汇编语言编写程序。在Windows时代,C语言程序员都体验过直接使用C语言来编写Windows程序的艰难。于是,很多人就会马上想起汇编语言的好处,试着用汇编语言来编写Windows程序。但Windows操作系统本身的自我保护机制,让程序员直接控制硬件没有以前那么容易了,这使得喜欢用汇编语言的人又有一定的减少。但实际上,在Windows环境下使用汇编语言不会比C语言难,有时反而更加简单。在Windows操作系统中,可执行文件比DOS操作系统下有了极大的改进,现在全部使用的都是基于Microsoft设计的一种新的文件格式:Portable Executable File Format。 Win32 PE病毒数量巨大,破坏性强,同时伴随着新的、高超的编程技巧,是每个信息安全人员必须掌握的一种病毒。 5.1 Win 32 PE 病毒原理(续) 重定位问题 重定位是病毒能顺利运行的最基本条件。似乎没有人在编写普通程序时会考虑程序中代码在以后运行时在内存中的具体地址。那是因为有编译程序做这些事情。病毒的情况比较特殊,它不是独立存在的,而是需要寄生在一个宿主中。但病毒也是程序,又有程序的共同性,同样也要引用一些数据来帮助运行。但病毒植入宿主的位置内存是宿主或病毒在编译时无法预知的:病毒要感染千千万万不同的具体宿主;每个宿主又可以被千千万万个不同的病毒感染,再加上各台计算机特殊的运行环境,使得病毒在感染宿主时在宿主中的准确位置千差万别,由于编译后的宿主变量会直接引用变量名(运行时则是偏移地址)来访问,所以如果横加插入则在引用数据时肯定会发生错误。 5.1 Win 32 PE 病毒原理(续) 如图,插入病毒之后变量R的位置发生了变化,必须加上由于病毒代码而产生的增量r。所以重定位技术不解决,PE文件的感染就无法实现。 5.1 Win 32 PE 病毒原理(续) 一般来说,重定位的方法有以下两种。 1.使用Call指令等特殊指令在运行时动态获取指令地址 Call指令是汇编跳转指令,用于调用子程序。这个指令的特点是先将返回地址压栈(即将Call后的第一条指令地址压栈,这就是保护现场),再将EIP置为需要调用的地址。如果子程序中有ret指令就会弹栈,且弹出目标就是EIP。这样,程序就会正常运行下去。如果有一个变量地址和编译时预定义地址之间有一个偏差,一般将这个差称为delta offset,则运行时只需要将该差值加到原编译时预定的地址上,得到的就是运行时数据的正确地址。这样一来,可以通过将delta offset 放在某个寄存器中,然后变址寻址引用变量就可以解决引用数据重定位的难题。 5.1 Win 32 PE 病毒原理(续) 2.利用PE文件的重定位表项实现 这种方法就是在感染目标PE文件时,将引用自身指令所需要被重定位的地址全部写入目标PE文件的重定位表中,如宿主无重定位表项(如用MS linker 的/fixed)则创建后再写入。重定位的工作就完全由系统加载器在加载PE文件时自动进行了。重定位表项由PE 文件头的DataDirectory数据中的第6 个成员IMAGE_DIRECTORY_ENTRY_BASERELOC 指向。该方法比较复杂,尤其是如果目标宿主没有重定位表项,则需要创建添加,手续较多。 5.1 Win 32 PE 病毒原理(续) 获取API地址问题 Win32 PE程序需要调用API函数才能实现很多在DOS下所不能想象的功能,Win32 PE病毒也是一样,它们都需要通过引用程序一开始的引用函数节来得到API函数在动态链接库中的真正地址。可是由于Win32 PE病毒程序是非法的,它只有一个代码节,不可能像合法Win32 PE程序那样拥有引入函数节,所以直接调用API函数的想法就落空了。因此,Win32 PE病毒要解决的第二个问题就是如何获取所需API函数在动态链接库中的真正地址。 Windows操作系统的成功在很大程度上要归功于不论是Windows 2000还是Windows XP都有一套自己Win32 API,且在不同Windows上的兼容性极高。最早的Win32 PE病毒的思路是预编码,比如Windows 2000 中CreateFileA 的地址是0x7EE63260,则在病毒代码中需要用到CreateFileA时用call [7EE63260h]语句来实现调用。这么做有两个缺陷:第一就是不同Windows的

您可能关注的文档

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档