病毒与计算机安全(2)

2019-03-11 14:24

件)。那么,作为一个完整的文件来传播的,就类似于生物界中的细菌(细菌是细胞),那就是蠕虫,现在也被广义地看作病毒。随着互联网的普及和迅猛发展,病毒也向着多元化方向发展,很多病毒都具有病毒和蠕虫等的多重特性。 1.1.2 目的与意义

计算机病毒破坏硬盘上的数据,拥塞网络,干扰人们的正常生活,每年的直接和间接经济损失都数以百亿计。防治病毒的重要性不言而喻。

2. 病毒基础知识

2.1 PE文件格式与计算机病毒

在编写Dos文件型病毒时,不可避免我们要非常了解MZ文件格式。同样如果想在Windows环境下编写感染EXE的文件型病毒,我们不得不先在PE文件格式上下一番功夫。 2.1.1 PE文件格式与Win32病毒的关系

Win32病毒感染文件时,一般都是针对EXE,SCR文件,而这些文件都是PE格式,所以,只有了解PE格式的规范和细节,才能编写PE文件型病毒。一般来说,Win32病毒是这样被运行的:

1.用户点击 (或者系统自动运行)一个染毒程序

2.PE装载器(系统程序)通过PE文件中的Address Of Entry Point和

Image Base之和来定位第一条语句在内存的偏移。

3.从第一条语句开始执行 (这时其实执行的是病毒代码) 4.病毒主体代码执行完毕,将控制权交给染毒程序。 5.染毒程序继续执行。

可见,Win32病毒要想对.EXE文件进行传染,了解PE文件格式确

2

实是不可少的。下面我们就将结合计算机病毒的感染原理,具体分析一下PE文件的具体格式。 2.1.2 PE文件格式介绍

PE就是Portable Executable(可移植的执行体)。它是Win32可执行文件的标准格式。\Executable\意味着此文件格式是跨win32平台的。即使Windows运行在非Intel的CPU上,任何win32平台的PE装载器都能识别和使用该文件格式。当然,移植到不同的CPU上PE执行文件必然得有一些改变。所有Win32执行体(都使用PE文件格式,包括 NT的内核模式驱动程序 (kernel mode drivers).因而研究PE文件格式,除了有助于了解病毒的传染原理之外,也给了我们洞悉悉Windows结构的良机。表1-1是PE文件格式的概要。

所有PE文件(甚至32位的DLLs)必须以一个简单的DOS MZ header开始。有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体,然后运行紧随MZ header之后的DOS stub. DOS stub实际上是个有效的EXE,在不支持PE文件格式的操作系统中,它将简单显示一个错误提示,类似于字符串 \。 紧接着DOS stub的是PE header。包含了许多PE装载器用到的重要域。执行体在支持PE文件结构的操作系统中执行时,PE装载器将从DOS MZ header中找到PE header的起始偏移量。因而跳过了DOS stub直接定位到 真正的文件头PE header。

3

2.2 地址与汇编指令的本质 2.2.1 地址的基本概念

虚拟地址=逻辑地址=【段选择子】:【线形地址】,利用段选择子找到描述符,描述符有字段表示段的基地址 (在Win32中都是0,所以线形地址就是真正地址)还有字段表示段属性,实际上起到保护作用。

事实上,在Win32中,其他地址己经不重要了,关键的只是线形地址。我们在程序中使用的都是线形地址,我们完全可以忘记虚拟内存的概念,认为每个进程确实具有4G的物理内存,OS和CPU屏蔽了这个细节。不考虑它,也不会影响程序的编写。程序在执行时,CPU会将我们使用的地址(可能是硬编码或寄存器)转换为物理地址。 寻址时,最重要的寄存器是eip和CR3.CR3的内容是物理地址,这在寻址过程中是很特殊的,因为Win32在保护模式下,感觉上都是虚拟地址,但是,如果真的都是虚拟地址,可就真的没办法定位到物理内存了。

CPU只是根据eip的值一条一条的执行。此时访问的地址就是本进程(P)的4G空间,执行P的指令。如何实现的呢?关键是页表。 2.2.2 映射的本质

内存和CPU,之间有一个MMU部件(Memory Management Unit),cpu执行时,把eip高20位作为一个索引,再将[index+CR3]的作为高20位,eip的低12位作为低12位组合在一起,形成新的32位地址,这就是物理地址.把页表想象成一个数组,个数为2~20(1M),大小为4M,页表当然存储在物理内存中,CR3就是数组首地址。数组的每一项为一个DWORD,双字的前20位表示一个物理页面。形象地:

页号(0~19) ? 页属性 保留(30) 提交 (31) CR3一> 00100 rw 1 1

4

01001 r 1 0

01010 0 0 0 00111 0 0 0

10011 0 0 0 这表明,物理内存的第4个物理页面提交,第9个保留. 每个进程都含有这样一个页表,其中的页号可能一样,就是对应相同的物理页面,比如内存映射文件。此时一个进程修改的数据,其他进程访问时也会改变。每个进程都有4G的内存可以使用,只是很多页面没有提交而己,这就是每个进程有4G的原理。

所谓映射,简单的说,就是将页表项的保留和提交设置为1而已。解除映射则置。解除后,再使用线形地址访问内存时,找到页表相应项,发现此页面没有保留,就会发生内存错误。

值得注意的是,即使使用Map View Of File,页表中提‘交’字段也未必是1,只是作了保留标志,其他函数请求内存时就不会重复分配了,真正访问这个页面时再产生页错误而真正分配物理页。 2.2.3 重要汇编指令的含义与技巧 指令含义

1.CALLX <一>PUSH EIP;IMPX这是唯一获得EIP的方法。 2.PUSHX <一>SUB ESP,4;MOV[ESP],X 3.RET <->POP EIP把栈顶内容放入EIP 4.STOSD <一>MOV [EDI],EAX ;ADD EDI,4 技巧

1.将寄存器清零

XOR EAX,EAX不要用MOV EAX,O 寄存器和零比较

OR EAX,EAX 不要用CMP EAX,O

5

连续多个PUSH 0 XOR EAX, EAX

PUSH EAX PUSH EAX PUSH EAX 不要用PUSH 0 PUSH 0 2.3 方汇编技术

这种方法要求病毒包括一个小型的反汇编软件,感染的时候,将被感染文件加载到内存中,然后一条一条代码的进行反汇编,当满足某个特定的条件的时候(病毒认为可以安全的改变代码了),将原来的指令替换成一条跳转指令,跳转到病毒代码中,“CNTV”和“中间感染”病毒是用这种方法插入跳转到病毒的指令。见图2.3

图 2.3 2.4 小结

本章介绍了病毒需要的基本知识,PE格式,汇编指令以及地址的含

6


病毒与计算机安全(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:漳州2018年初中毕业班质量检测

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: