病毒原理2汇编_第1页
病毒原理2汇编_第2页
病毒原理2汇编_第3页
病毒原理2汇编_第4页
病毒原理2汇编_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机病毒与反病毒技术(jsh)共八十三页主要(zhyo)内容硬盘结构文件系统计算机的引导过程中断(zhngdun)内存管理EXE文件的格式第2章 预备知识共八十三页2.1.1 硬盘的物理(wl)结构绝大多数硬盘在结构上都是温彻斯特(Winchester)盘,其核心就是:磁盘片被密封、固定并且不停高速旋转,磁头悬浮于盘片上方(shn fn)沿磁盘径向移动,并且不和盘片接触2.1 硬盘结构简介共八十三页2.1.1 硬盘的物理(wl)结构低级格式化与硬盘的基本参数对于一块新硬盘,低级格式化的过程已经由生产厂家在产品出厂前完成了低级格式化的主要(zhyo)目的是将盘面划分成磁道、扇区和柱面2.1 硬

2、盘结构简介共八十三页2.1.1 硬盘的物理(wl)结构基本INT 13H调用BIOS INT 13H调用是BIOS提供的磁盘基本输入输出中断调用,它可以完成磁盘(包括硬盘和软盘)的复位、读写、校验、定位、诊断、格式化等功能,完全(wnqun)不用考虑被操作硬盘安装的是什么操作系统它使用的就是CHS寻址方式最大只能访问8GB左右的硬盘2.1 硬盘结构简介共八十三页2.1.1 硬盘的物理(wl)结构现代硬盘结构简介改用等密度结构生产硬盘,外圈磁道的扇区比内圈磁道多硬盘不再具有实际的3D参数寻址方式也改为线性寻址,即以扇区为单位进行寻址现代大容量硬盘一般采用LBA(Logic Block Addre

3、ss)线性地址来寻址,以替代CHS寻址。在LBA方式下,系统把所有的物理扇区都按某种方式或规则看做是一线性编号的扇区,即从0到某个最大值方式排列,这样,只用一个序数就能确定(qudng)一个唯一的物理扇区。这就是线性地址扇区的由来,显然线性地址是物理扇区的逻辑地址2.1 硬盘结构简介共八十三页2.1.1 硬盘的物理(wl)结构扩展INT 13H虽然现代硬盘都已经采用了线性寻址,但是由于基本INT 13H的制约,使用BIOS INT 13H接口的程序,如DOS等还只能访问8G以内的硬盘空间。为了打破这一限制,Microsoft等几家公司制定了扩展INT 13H标准(Extended INT 13

4、H),采用线性寻址方式存取硬盘,所以突破(tp)了8G的限制,而且还加入了对可拆卸介质(如移动硬盘、优盘)的支持2.1 硬盘结构简介共八十三页2.1.1 硬盘的物理(wl)结构分区与高级格式化硬盘在使用时,是按照不同的区域存储(cn ch)数据的,硬盘分区就是划分区域的过程。划分好的每一个区域都称作一个分区,最多可以划分为四个主分区。这项工作由分区程序来完成,通常使用FDISK或磁盘管理工具软件在分区的过程中,分区程序向0柱面0磁头1扇区写入主引导记录MBR(Master Boot Record)和分区记录表DPT(Disk Partition Table),并建立一个分区表链,向所有的逻辑驱

5、动器写入链表记录。硬盘的分区格式常用的分区格式有四种:FAT16、FAT32、NTFS和Linux,其中使用最多的是FAT16和FAT32硬盘分区后还不能直接使用,要在每个分区内建立完整的存储系统后才能正常使用。建立存储系统的工作一般由FORMAT程序来完成,这个过程称为高级格式化高级格式化的目的是在分区内建立分区引导记录DBR(DOS Boot Record)、文件分配表FAT(File Allocation Table)、文件目录表FDT(File Directory Table)和数据区DATA2.1 硬盘结构简介共八十三页2.1.2 硬盘的数据结构(sh j ji u)主引导扇区的组成

6、主引导扇区(Boot Sector)也就是硬盘的第一个扇区(0柱面0磁头1扇区)主引导记录(Master Boot Record,MBR)主分区表即磁盘分区表(Disk Partition Table,DPT)引导扇区标记(Boot Record ID/Signature)完成(wn chng)系统主板BIOS向操作系统交接的重要入口2.1 硬盘结构简介主引导扇区结构图共八十三页2.1.2 硬盘的数据结构(sh j ji u)硬盘主分区表结构(jigu)简介2.1 硬盘结构简介偏移字节字段长度值字段名和定义0 x01BEBYTE0 x80引导指示符号(Boot Indicator) 0 x01

7、BFBYTE0 x01起始磁头号(Start Head)0 x01C0WORD6位0 x01起始扇区号(Start Sector)0 x01C110位0 x00起始柱面号(Start Cylinder)0 x01C2BYTE0 x07系统ID(System ID),定义了分区的类型0 x01C3BYTE0 xFE结束磁头号(End Head)0 x01C4WORD6位0 xBF结束扇区号(End Sector)0 x01C510位0 xFC结束柱面号(End Cylinder)0 x01C6DWORD0 x0000003F相对扇区数(Relative Sectors) 0 x01CADWORD

8、0 x00BB867E总扇区数(Total Sectors),该分区中扇区总数共八十三页2.1.3 扩展(kuzhn)分区与扩展(kuzhn)MBR简介通过主引导记录定义的硬盘分区表,最多只能描述4个分区微软采用(ciyng)虚拟MBR的技术用以描述分区的扇区形成一个“分区链”,通过这个分区链,就可以描述所有的分区2.1 硬盘结构简介共八十三页2.1.3 扩展分区(fn q)与扩展MBR简介主分区、扩展分区、逻辑(lu j)驱动器及其关系2.1 硬盘结构简介共八十三页2.1.3 扩展分区(fn q)与扩展MBR简介扩展(kuzhn)分区和逻辑盘2.1 硬盘结构简介共八十三页2.1.3 扩展分区

9、(fn q)与扩展MBR简介3主分区(其中一个用作扩展(kuzhn)的磁盘结构图2.1 硬盘结构简介一个3主分区的磁盘结构扩展分区表链接示意图共八十三页2.2.1 文件系统简介(jin ji)当磁盘被格式化之后(zhhu),文件系统需要用到一些特殊的区域来组织它本身的数据:主引导记录(Master Boot Record,MBR)磁盘分配表(Disk Partition Table,DPT)操作系统引导记录(DOS Boot Record,DBR)文件分配表(File Allocation Table,FAT)文件目录表(File Directory Table,FDT)数据区2.2 文件系统

10、共八十三页2.2.2 FAT32 DBRDBR区(DOS Boot Record) 引导(yndo)扇区2.2 文件系统偏移字节字段长度(字节)字段名对应图中标记0 x003 跳转指令细黑虚线0 x038 厂商标志和OS版本号细黑实线0 x0B53BPB红粗虚线0 x4026 扩展BPB红粗实线0 x5A420引导程序代码(没有下划线)0 x01FE2 有效结束标志蓝粗(最粗)虚线共八十三页2.2.3 FAT16 DBRFAT12和FAT16中的DBR与FAT32中的DBR的基本含义类似,只是相关(xinggun)偏移量和参数意义有小的差异2.2 文件系统偏移字节字段长度(字节)字段名称0 x

11、003跳转指令(Jump Instruction)0 x038OEM ID0 x0B25BPB0 x2426扩展BPB0 x3E448引导程序代码(Bootstrap Code)0 x01FE4扇区结束标识符(0 x55AA)共八十三页2.2.4 保留(boli)扇区在FAT文件系统DBR的偏移0 x0E处,用2个字节存储保留扇区的数目。所谓保留扇区(有时候也称作系统扇区、隐藏扇区),是指从分区DBR扇区开始的仅为系统所有的扇区,包括DBR扇区。在FAT16文件系统中,保留扇区的数据通常设置为1,即仅仅DBR扇区。而在FAT32中,保留扇区的数据通常取为32FAT32中的保留扇区除了磁盘总第0

12、扇区用作DBR,总第2扇区(Windows 98系统)或总第0 xC扇区(Windows 2000/XP)用作OS引导(yndo)代码扩展部分外,其余扇区都不参与操作系统管理与磁盘数据管理,通常情况下是没作用的操作系统之所以在FAT32中设置保留扇区,是为了对DBR作备份或留待以后升级时用。FAT32中,DBR偏移0 x32占2字节的数据指明了DBR备份扇区所在,一般为0 x06,即第6扇区。当FAT32分区DBR扇区被破坏导致分区无法访问时,可以用第6扇区的原备份替换第0扇区来找回数据2.2 文件系统共八十三页2.2.5 FAT16 存储(cn ch)原理当把一部分磁盘空间格式化为FAT文件

13、系统时,FAT文件系统就将这个分区当成整块可分配(fnpi)的区域进行规划,以便于数据的存储FAT16是Microsoft较早推出的文件系统,具有高度兼容性,目前仍然广泛应用于PC机尤其是移动存储设备中2.2 文件系统FAT16的组织形式共八十三页2.2.5 FAT16 存储(cn ch)原理FAT表记录了磁盘(c pn)数据文件的存储链表(簇号链表)FAT表以“F8 FF FF FF”开头,此4字节为介质描述单元,并不参与FAT表簇链关系。小红字标出的是FAT扇区每2字节对应的簇号相对偏移0 x40 x5为第2簇(顺序上第1簇),为“FF FF”,表示存储在第2簇上的文件/目录是个小文件,只

14、占用1个簇便结束了2.2 文件系统共八十三页2.2.6 FAT32 存储(cn ch)原理FAT32是个非常有效的文件系统,FAT32依然占据(zhnj)着Microsoft Windows文件系统中重要的地位FAT32最早是出于FAT16不支持大分区、单位簇容量大以至于空间急剧浪费等缺点设计的2.2 文件系统FAT32分区的基本构成共八十三页2.2.7 NTFS文件系统NTFS是一个比FAT更复杂的系统。在NTFS中,磁盘上的任何事物都为文件NTFS的BPB参数NTFS的引导扇区也是完成引导和定义分区参数与FAT分区不同的是,FAT分区的BOOT记录正常,即使文件不正确,也显示分区没有错误,

15、而NTFS分区的BOOT不是分区正常的充分条件,它要求(yoqi)必须主文件表MFT(Master File Table)中的系统记录如$MFT等正常该分区才能正常访问2.2 文件系统共八十三页2.2.7 NTFS文件系统主文件表MFT 与文件记录在NTFS中,所有存储在卷上的数据都包含在文件中,包括用来定位和获取文件的数据结构、引导程序和记录这个卷的记录(NTFS元数据)的位图,这体现了NTFS的原则:磁盘上的任何事物都为文件在NTFS中,卷中所有存放的数据均记录在一个叫做MFT的文件记录数组中,称为主文件表(Master File Table),MFT是由高级格式化产生(chnshng)的

16、。而MFT由文件记录(File Record)数组构成2.2 文件系统共八十三页2.2.7 NTFS文件系统文件记录的大小一般是固定的,不管簇的大小是多少,文件记录大小一般为1KB文件记录在MFT文件记录数组中物理上是连续的,且从0开始编号,所以(suy),NTFS是预定义文件系统2.2 文件系统共八十三页2.2.7 NTFS文件系统元数据与元数据文件MFT仅供系统本身组织、架构文件系统使用,这在NTFS中称为元数据(Metadata,是存储在卷上支持文件系统格式管理的数据,不能被应用程序来访问,它只能为系统提供服务)。其中最基本(jbn)的前16个记录是操作系统使用的非常重要的元数据文件元数

17、据文件的名字都以“$”开始,所以是隐藏文件2.2 文件系统共八十三页2.2.7 NTFS文件系统2.2 文件系统序号元文件功能0$MFT主文件表本身1$MFTMirr主文件表的部分镜像2$LogFile日志文件3$Volume卷文件4$AttrDef属性定义列表5$Root根目录6$Bitmap位图文件7$Boot引导文件8$BadClus坏簇文件9$Secure安全文件10$UpCase大写文件11$Extend metadata directory扩展元数据目录12$Extend$Reparse重解析点文件13$Extend$UsnJrnl变更日志文件14$ExtendQuota配额管理文

18、件15$Extend$ObjId对象ID文件1623 保留23+ 用户文件和目录NTFS对元数据文件的备份(bi fn)共八十三页2.2.7 NTFS文件系统文件和目录记录NTFS将文件作为“属性、属性值”的集合来处理文件数据就是未命名属性的值,其他文件属性包括文件名、文件拥有者、文件时间标记等每个属性由单个的流(Stream)组成,即简单的字符队列NTFS并不对文件进行操作,而只是对属性流进行读写NTFS提供对属性流的各种操作:创建、删除、读取(字节范围)以及写入(字节范围)读写操作一般是针对文件的未命名属性的,对于已命名的属性则可以(ky)通过已命名的数据流句法来进行操作文件属性列表在元数

19、据文件$AttrDef中预定义(一般有一个未命名流,为缺省流,未命名流只能有一个,而命名流可以有多个,NTFS支持多流文件)2.2 文件系统共八十三页2.2.7 NTFS文件系统一个文件通常占用一个文件记录。但当一个文件具有很多项属性值或很零碎的时候,就可能占用一个以上的文件记录。这种情况下,第一个文件记录是其基本的文件记录,存储有该文件需要的其他文件记录的位置。NTFS的文件夹只是一个简单的文件名和文件引用号的索引,如果(rgu)目录列表小于一个记录的长度,那么该文件夹的所有信息都存储在主文件表的记录中。对于大于记录长度的文件夹则使用B+树进行管理,并用一个指针指向一个外部簇,该簇用来存储那

20、些MFT内存储不了的文件夹的属性2.2 文件系统共八十三页2.2.7 NTFS文件系统常驻属性与非常驻属性当一个(y )文件很小时,其所有属性和属性值都可以存放在MFT的文件记录中。当属性值能直接存放在MFT中时,该属性就称为常驻属性(Resident Attribute)有些属性总是常驻的,这样NTFS才可以确定其他非常驻属性。例如,标准信息属性和根索引就总是常驻属性小文件和文件夹(典型的如1023字节或更少)将全部存储在文件的MFT记录里2.2 文件系统共八十三页2.2.7 NTFS文件系统如果属性值能直接存放在MFT中,那么NTFS对它的访问时间将大大缩短。NTFS只需访问磁盘一次,即可

21、获得数据,而不必像FAT文件系统那样,先在FAT表中查找文件,再读出连续分配的单元,最后找到文件的数据小文件或小目录的所有(suyu)属性,均可以在MFT中常驻2.2 文件系统共八十三页2.2.7 NTFS文件系统文件LittleFile.txtLittleFile.txt的属性(shxng)用NFI查看文件2.2 文件系统共八十三页2.2.7 NTFS文件系统如果目录列表小于一个文件记录的长度,小目录的索引根属性包括其中所有文件和子目录的索引,那么,该文件夹的所有信息都存储在主文件表的记录中大文件或大目录的所有属性,就不可能都常驻在MFT中如果一个属性太大而不能存放在MFT文件记录中,NTF

22、S将从MFT之外分配区域。这些(zhxi)区域通常称为一个运行(Run)或一个盘区(Extent),它们可用来存储属性值,如文件数据如果以后属性值又增加,那么NTFS将会再分配一个运行值存储在运行中而不是在MFT文件记录中的属性称为非常驻属性(Nonresident Attribute)2.2 文件系统大文件(wnjin)的非常驻属性共八十三页2.2.7 NTFS文件系统2.2 文件系统大目录(ml)的MFT记录共八十三页2.2.7 NTFS文件系统逻辑簇号、虚拟簇号与数据定位Windows以簇号来定位文件在磁盘上的存储位置,在FAT格式的文件系统中,有关簇号的指针包含(bohn)在FAT表中

23、,在NTFS中,有关簇号的指针则包含(bohn)在$MFT及$MFTMirr文件中NTFS使用逻辑簇号(Logical Cluster Number,LCN)和虚拟簇号(Virtual Cluster Number,VCN)来对簇进行定位2.2 文件系统非常(fichng)驻数据属性的VCN共八十三页2.2.7 NTFS文件系统当该文件含有超过2个运行时,则第三个运行从VCN7开始,数据属性头部含有前两个运行VCN的映射(yngsh),这便于NTFS对磁盘文件分配的查询。为了便于NTFS快速查找,具有多个运行文件的常驻数据属性头中包含了VCN-LCN的映射(yngsh)关系2.2 文件系统共八

24、十三页2.2.7 NTFS文件系统NTFS通过MFT访问卷的过程:(1)装载该卷;(2)从文件记录的数据属性中获得VCN到LCN的映射信息(3)打开几个元数据文件的MFT记录,并打开这些文件属性列表虽然数据属性常常因太大而存储在运行中,但是其他属性也可能因MFT文件记录没有(mi yu)足够空间而需要存储在运行中另外,如果一个文件有太多的属性而不能存放在MFT记录中,那么第二个MFT文件记录就可用来容纳这些额外的属性(或非常驻属性的头)在这种情况下,一个称作“属性列表”(Attribute List)的属性就加进来。属性列表包括文件属性的名称和类型代码以及属性所在MFT的文件引用属性列表通常用

25、于太大或太零散的文件,这种文件因VCN-LCN映射关系太大而需要多个MFT文件记录。具有超过200个运行的文件通常需要属性列表2.2 文件系统共八十三页2.3.1 系统启动过程(guchng)简介系统启动过程主要由以下步骤组成(以硬盘冷启动为例):开机,系统BIOS加电自检读主引导扇区MBR读取激活分区(fn q)DBR操作系统引导代码引导系统并读取操作系统初始化文件2.3 计算机的启动过程共八十三页2.3.2 DOS引导(yndo)程序DOS引导程序(chngx)所作的检测、初始化动作如下:调整堆栈位置修改并用修改后的磁盘参数表来复位磁盘系统计算根目录表的首扇区的位置及IO.SYS的扇区位置

26、读入根目录表的首扇区检查根目录表的起始两项是否为IO.SYS及MSDOS.SYS将IO.SYS文件起始三个扇区读入内存0000:0700H处跳到0000:0700H处执行IO.SYS,引导完毕上述任一步若出错,则显示“Non system disk or disk error. ”信息,等用户按任一键后试图重新启动2.3 计算机的启动过程共八十三页2.3.3 Windows 2000/XP启动过程(guchng)简介在基于Intel的计算机上,Windows 2000/XP的启动过程大致可分为8个步骤预启动计算机加电自检,读取硬盘的MBR、执行NTLDR(操作系统加载器)文件进行初始化NTLD

27、R将处理器从实模式转换为32位保护模式读取BOOT.INI文件BOOT.INI文件其作用是使系统在启动过程中出现选择菜单(ci dn),由用户选择希望启动的操作系统,若只有一个操作系统则不显示加载NTDETECT.COM文件由NTDETECT.COM来检测计算机硬件,如并行端口、显示适配器等,并将收集到的硬件列表返回NTLDR用于以后在注册表中注册保存2.3 计算机的启动过程共八十三页2.3.3 Windows 2000/XP启动过程(guchng)简介选择硬件配置文件如果Windows 2000/XP有多个硬件配置文件,此时会出现选择菜单,等待用户确定(qudng)要使用的硬件配置文件,否则

28、直接跳过此步,启用默认配置装载内核引导过程装载Windows 2000/XP内核NtOsKrnl.EXE。随后,硬件抽象层(HAL)被引导进程加载,完成本步骤初始化内核内核完成初始化,NTLDR将控制权转交Windows 2000/XP内核,后者开始装载并初始化设备驱动程序,并启动Win32子系统和Windows 2000/XP服务用户登录由Win32子系统启动WinLogon.EXE,并由它启动Local Security Authority (LSASS.EXE)显示登录对话框。用户登录后,Windows 2000/XP会继续配置网络设备、用户环境,并进行个性化设置。最后,伴随着微软之声和

29、我们熟悉的个性化桌面,Windows 2000/XP启动过程完成2.3 计算机的启动过程共八十三页2.4.1 中断(zhngdun)中断(Interrupt),就是CPU暂停当前程序的执行,转而执行处理紧急事务的程序,并在该事务处理完成后能自动恢复执行原先程序的过程引起紧急事务的事件为中断源,处理紧急事务的程序为中断服务程序或中断处理程序计算机系统根据(gnj)紧急事务的紧急程度,把中断分为不同的优先级,并规定:高优先级的中断能暂停低优先级的中断服务程序的执行在计算机系统中,引入中断的最初目的是为了提高系统的输入输出性能。随着计算机应用的发展,中断技术也应用到计算机系统的许多领域,如:多道程序

30、、分时系统、实时处理、程序监视和跟踪等领域。中断的分类硬中断除以零、算术溢出、按下键盘等等2.4 中断共八十三页2.4.1 中断(zhngdun)软中断因程序执行了计算机INT指令造成的例如:INT 21H将执行21H中断。这里(zhl)21H称作中断号,其中H代表十六进制(H前取值范围为0FF)。系统就是用中断号来找出相应的中断处理程序的软中断包括BIOS中断、DOS中断与用户自定义中断2.4 中断共八十三页2.4.2 中断(zhngdun)优先权CPU为了处理并发的中断请求,规定了中断的优先权。中断优先权由高到低是:调试故障其它故障除法错,INT0(溢出中断),INT n(软件中断)NMI

31、(不可屏蔽中断)INTR(可屏蔽中断)单步(dn b)中断规定了中断优先权之后,当多个中断同时发出中断请求时,CPU的中断逻辑就按照中断的优先权顺序来排队处理,首先处理中断优先权较高的中断,然后再处理中断优先权较低的中断在处理某一中断的过程中,如果有更高的中断源请求中断,则CPU会响应更高级的中断2.4 中断共八十三页2.4.3 中断向量表中断向量表(Interrupt Vectors)是一个特殊的线性表,它保存着系统所有中断服务程序的入口地址(偏移量和段地址)中断向量表占用内存最低端0000H到03FEH的1K地址空间,存放256个元素即远指针(中断向量),编号从00到255(00FFH)每

32、一中断向量的入口地址占4个字节,高2字节存放中断向量的段地址,低2字节存放中断向量的偏移地址一个中断向量指向一个子程序(chngx),该程序(chngx)就称为中断处理程序(chngx)2.4 中断(zhngdun)中断向量表共八十三页2.4.4 中断(zhngdun)处理过程CPU在执行程序时,是否响应中断要取决于以下三个条件能否同时满足:有中断请求;允许CPU接受中断请求;一条指令执行完,下一条指令还没有(mi yu)开始执行。条件是响应中断的主体。除用指令INT所引起的软件中断之外,其它中断请求信号是随机产生的,程序员是无法预见的程序员可用程序部分地控制条件是否满足,即可用指令STI和C

33、LI来允许或不允许CPU响应可屏蔽的外部中断。而对于不可屏蔽中断和内部中断,CPU一定会响应它们,程序员是无控制权的。CPU一定会执行这些中断的中断服务程序2.4 中断共八十三页2.4.4 中断(zhngdun)处理过程出现中断请求之后,CPU的操作过程是:先完成当前指令的操作,然后按中断优先权逐个判断是哪一类型的中断。确定中断类型之后,CPU进行如下几方面的工作:将状态标志进栈保护0IF(清除标志IF,禁止跟踪),0TF(清除标志TF,禁止中断)根据(gnj)中断类型号计算中断向量入口地址在向量表中的偏移:偏移=中断类型号4保护断点,把当前代码段寄存器的内容进栈保护,将中断向量的段地址送CS

34、;把当前指令指针入栈保护,将中断向量的偏移地址送IP;于是,程序就转到了中断服务程序进入中断服务程序之后,一般要保护现场(寄存器压栈),然后进行中断服务。在中断服务返回前要恢复现场(寄存器弹栈),最后用STI开中断,并用IRET恢复断点处的标志寄存器、CS和IP的值2.4 中断共八十三页2.4.5 扩展(kuzhn)INT 13H设计扩展INT 13H接口的目的是为了扩展BIOS的功能,使其支持多于1024柱面的硬盘, 以及(yj)可移动介质的锁定、解锁及弹出等功能2.4 中断共八十三页2.4.6 中断(zhngdun)与计算机病毒计算机提供很多中断,合理合法地修改中断,会给计算机增加非常有用

35、的新功能计算机病毒则篡改中断为其达到传染、激发等目的服务与病毒有关的重要中断有:INT 13H磁盘输入输出中断,引导型病毒用于传染病毒和格式化磁盘INT 21H DOS功能调用中断INT 24H DOS的严重错误处理(chl)中断INT 25H DOS绝对磁盘读功能INT 26H DOS绝对磁盘写功能2.4 中断共八十三页简介(jin ji)内存是程序运行时的“场所”,是存储正在运行的程序及程序运行所需数据的地方。许多病毒常“躲”在内存中监视系统的运行、伺机传播或爆发一台计算机要正常工作必须有两种内存只读内存(只读存储器,Read Only Memory,ROM)随机内存(随机存储器,Rand

36、om Access Memory,RAM) ,这是我们通常所说的“内存”另外,Cache也是经常用到的,它位于CPU与内存之间,是一个读写速度(sd)比内存更快的存储器,称为高速缓冲存储器,简称高速缓存2.5 内存管理共八十三页2.5.1 内存(ni cn)寻址技术的演变20多年前,Intel推出了一款8位处理器8080,可访问到64K内的地址空间,还没有段的概念,访问内存都要通过绝对地址1978年,Intel开发出16位的处理器8086是内存寻址的第一次飞跃,引入了段概念,采用了“段地址:偏移量”的形式来描述内存地址,将内存分为数个64K大小的段Intel的80286处理器于1982年问世地

37、址总线位数增加(zngji)到24位,可以访问到16M的内存空间更重要的是从此开始引进了一个全新理念保护模式,访问内存时不能直接从段寄存器中获得段的起始地址,而需要经过额外转换和检查为了与旧处理器兼容,80286内存寻址可以以两种方式进行先进的保护模式(受保护的虚拟地址模式)老式的8086方式,即实地址模式(简称实模式)2.5 内存管理共八十三页2.5.1 内存寻址技术(jsh)的演变真正的第二次内存寻址飞跃发生在80386身上80386的地址总线扩展到了32位,可寻址空间扩充为4G在保护模式下,它的段范围不再局限于64K,可以达到4K4G在硬件上支持分页,确切的来说是:请求式分页的虚拟内存尽

38、管目前已经在使用64位的处理器,但主流操作系统仍然基于(jy)I386体系结构在8088/8086汇编语言中,有16位寄存器AX、BX、CX、DX、SI、DI、SP和BP;在80386中,这些寄存器被扩展到了32位,即EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP,段寄存器增加了FS(附加数据段#1)和GS(附加数据段#2)2.5 内存管理共八十三页2.5.2 DOS内存(ni cn)布局DOS操作系统(co zu x tn)运行于实模式中2.5 内存管理共八十三页2.5.3 保护模式与虚拟内存保护模式一般来说,80 x86(80386及其以后的各代CPU)可在实模式、保护模式

39、和虚拟86模式三种模式下运行(ynxng)实模式就是古老的MS DOS的运行环境,只能利用32位寄存器的前16位,而后面的16位就浪费了当前流行的Windows操作系统运行在保护模式下在Windows 9x下,如果开一个MS DOS窗口,即运行一个DOS应用程序,那么该程序就运行在虚拟86模式下保护模式和实模式采用了两种截然不同的思路保护模式带来的最大优点不是单纯的扩大了内存寻址范围,而是对内存寻址从机制上提供了保护,将系统的执行空间按权限进行了划分,防止应用程序非法访问其他应用程序的地址空间(任务间保护),防止应用程序非法访问操作系统地址空间(系统保护)2.5 内存(ni cn)管理共八十三

40、页2.5.3 保护模式与虚拟内存保护模式的权限级别在保护模式下,所有的应用程序都具有权限级别(Privilege Level,PL)。PL按优先次序分为(fn wi)四等:0级、1级、2级、3级,其中0级权限最高,3级最低目前只用到Ring 0和Ring 3两个级别2.5 内存(ni cn)管理特权级环共八十三页2.5.3 保护模式与虚拟内存应用程序如果拥有第0级的权限,则可以执行任何指令并访问任何数据如果运行在Ring 3级,则只能执行有限指令,能访问的数据也有限操作系统(co zu x tn)核心层运行在Ring 0级,而Win32子系统运行在Ring 3级,为运行在Ring 3级的应用程

41、序提供接口计算机病毒总是想方设法窃取Ring 0的权限(如CIH病毒),以实施更大范围的破坏2.5 内存(ni cn)管理Windows 2000/XP体系结构示意图共八十三页2.5.3 保护模式与虚拟内存虚拟内存在Windows系统中,任何一个进程(jnchng)都被赋予其自己的4GB虚拟地址空间,但并不意味着每一个进程(jnchng)实际拥有4GB的物理地址空间,该地址空间仅仅是一个虚拟地址空间。进程(jnchng)实际可以得到的物理内存要远小于其虚拟地址空间进程的虚拟地址空间是每个进程私有的,在进程内运行的线程对内存空间的访问都被限制在调用进程之内,而不能访问属于其他进程的内存空间在不同

42、的进程中可以使用相同地址的指针来指向属于各自调用进程的内容而不会由此引起混乱2.5 内存(ni cn)管理共八十三页2.5.3 保护模式与虚拟内存2.5 内存(ni cn)管理Windows 9x进程的地址空间Windows NT进程的地址空间共八十三页2.5.4 Win32内存(ni cn)管理Win32中的内存管理是分层次的,系统提供了几组层次不同的函数来管理内存,它们是标准内存管理函数、虚拟内存管理函数、堆管理函数和内存映射文件函数。所有的这些函数都是为了让用户能在比较高的层次上方便地管理内存,以便将程序和底层的内存分页机制(jzh)隔离开来2.5 内存管理共八十三页简介(jin ji)

43、在DOS环境下有四种基本的可执行文件格式批处理文件(wnjin),以.BAT结尾的文件(wnjin)设备驱动文件,是以.SYS结尾的文件,如CONFIG.SYSCOM文件,是以.COM结尾的纯代码文件没有文件头部分,缺省情况下总是从0 x100H处开始执行,没有重定位项,所有代码和数据必须控制在64K以内EXE文件,是以.EXE结尾的文件文件以英文字母“MZ”开头,通常称之为MZ文件MZ文件有一个文件头,用来指出每个段的定义,以及重定位表。.EXE文件摆脱了代码大小最多不能超过64K的限制,是DOS下最主要的文件格式在Windows 3.0/3.1的可执行文件,在MZ文件头之后又有一个以“NE

44、”开始的文件头,称之为NE文件在Win32位平台可执行文件格式:可移植的可执行文件(Portable Executable File)格式,即PE格式。MZ文件头之后是一个以“PE”开始的文件头2.6 EXE文件的格式共八十三页2.6.1 MZ文件格式.EXE文件由三部分构成:文件头、重定位(dngwi)表和二进制代码2.6 EXE文件(wnjin)的格式偏移大小(字节)描述002EXE文件类型标记: 4D5Ah(ASCII字符MZ)022文件最后一个扇区的字节数042文件的总扇区(页)数文件的大小=(总扇区数-1)512+最后一个扇区的字节数062重定位项的个数082EXE文件头的大小(16

45、字节的倍数)0A2最小分配数(16字节的倍数)0C2最大分配数(16字节的倍数)0E2初始化堆栈段(SS初值)102初始化堆栈指针(SP初值)122补码校验和142初始代码段指针(IP初值)162初始代码段段地址(CS初值)182定位表的偏移地址(第一个重定位项的偏移量)1A2连接程序产生的覆盖号共八十三页2.6.2 NE文件格式NE是New Excutable的缩写,是16位Windows可执行文件的标准格式(g shi),这种格式(g shi)基本上没用了NE在MZ文件头之后添加了一个以“NE”开始的文件头2.6 EXE文件(wnjin)的格式共八十三页2.6.3 PE文件格式Win32可

46、执行文件,如*.EXE、*.DLL、*.OCX等,都是PE格式PE的意思就是Portable Executable(可移植、可执行),它是Win32可执行文件的标准格式由于大量的EXE文件(wnjin)被执行,且传播的可能性最大,因此,Win32病毒感染文件(wnjin)时,基本上都会将EXE文件(wnjin)作为目标2.6 EXE文件(wnjin)的格式共八十三页2.6.3 PE文件格式一般来说,病毒往往先于HOST程序获得控制权。运行Win32病毒的一般流程示意如下:用户点击或系统自动运行HOST程序;装载HOST程序到内存;通过(tnggu)PE文件中的AddressOfEntryPoi

47、nt加ImageBase之和,定位第一条语句的位置(程序入口);从第一条语句开始执行(这时执行的其实是病毒代码);病毒主体代码执行完毕,将控制权交给HOST程序原来的入口代码;HOST程序继续执行。问题在于:计算机病毒怎会在HOST程序之前执行?2.6 EXE文件(wnjin)的格式共八十三页2.6.3 PE文件格式PE文件(wnjin)的总体层次结构2.6 EXE文件(wnjin)的格式共八十三页2.6.3 PE文件格式相对虚拟地址 (Relative Virtual Addresses,RVA)相对虚拟地址是一个(y )相对于PE文件映射到内存的基地址的偏移量2.6 EXE文件(wnjin

48、)的格式共八十三页2.6.3 PE文件格式DOS头与DOS插桩程序PE结构中紧随MZ文件头之后的DOS插桩程序(DOS Stub)可以通过IMAGE_DOS_HEADER结构来识别一个合法的DOS头可以通过该结构的e_lfanew(偏移60,32bits)成员来找到PE开始的标志(biozh)0 x00004550(“PE00”)病毒通过“MZ”、“PE”这两个标志,初步判断当前程序是否是目标文件PE文件。如果要精确校验指定文件是否为一有效PE文件,则可以检验PE文件格式里的各个数据结构,或者仅校验一些关键数据结构。大多数情况下,没有必要校验文件里的每一个数据结构,只要一些关键数据结构有效,就

49、可以认为是有效的PE文件2.6 EXE文件(wnjin)的格式共八十三页2.6.3 PE文件格式2.6 EXE文件(wnjin)的格式typedef struct _IMAGE_DOS_HEADER / DOS的.EXE头部 USHORT e_magic; / 魔术数字 USHORT e_cblp; / 文件最后页的字节数 USHORT e_cp; / 文件页数 USHORT e_crlc; / 重定义元素个数 USHORT e_cparhdr; / 头部尺寸,以段落为单位 USHORT e_minalloc; / 所需的最小附加段 USHORT e_maxalloc; / 所需的最大附加段

50、USHORT e_ss; / 初始的SS值(相对偏移量) USHORT e_sp; / 初始的SP值 USHORT e_csum; / 校验和 USHORT e_ip; / 初始的IP值 USHORT e_cs; / 初始的CS值(相对偏移量) USHORT e_lfarlc; / 重分配表文件地址 USHORT e_ovno; / 覆盖号 USHORT e_res4; / 保留字 USHORT e_oemid; / OEM标识符(相对e_oeminfo) USHORT e_oeminfo; / OEM信息 USHORT e_res210; / 保留字 LONG e_lfanew; / 新EX

51、E头部的文件地址 IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;共八十三页2.6.3 PE文件格式PE文件头紧接着DOS Stub的是PE headerPE header是IMAGE_NT_HEADERS的简称,即NT映像头(PE文件头),存放(cnfng)PE整个文件信息分布的重要字段,包含了许多PE装载器用到的重要域。执行体在支持PE文件结构的操作系统中执行时PE装载器将从DOS MZ header中找到PE header的起始偏移量,从而跳过DOS Stub直接定位到真正的文件头PE header2.6 EXE文件(wnjin)的格式共八十三页2.6.3 PE

52、文件格式PE文件头的结构(jigu)字符串“PE00”(Signature)(4H字节) 紧跟着“PE00”的是映像文件头,是NT映像头的主要部分,它包含有PE文件的基本信息2.6 EXE文件(wnjin)的格式IMAGE_NT_HEADERS STRUCT Signature dd ? FileHeader IMAGE_FILE_HEADER OptionalHeader IMAGE_OPTIONAL_HEADER32 IMAGE_NT_HEADERS ENDStypedef struct _IMAGE_FILE_HEADER WORD Machine; / 0 x04,该程序要执行的环境及

53、平台 WORD NumberOfSections; / 0 x06,文件中节的个数 DWORD TimeDateStamp; / 0 x08,文件建立的时间 DWORD PointerToSymbolTable; / 0 x0c,COFF符号表的偏移 DWORD NumberOfSymbols; / 0 x10,符号数目 WORD SizeOfOptionalHeader; / 0 x14,可选头的长度 WORD Characteristics; / 0 x16,标志集合 IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;共八十三页2.6.3 PE文件格式紧跟映像文

54、件头后面(hu mian)的就是可选映像头2.6 EXE文件(wnjin)的格式typedef struct _IMAGE_OPTIONAL_HEADER / 标准域: / WORD Magic; / 0 x18,一般是0 x010B BYTE MajorLinkerVersion; / 0 x1a,链接器的主/次版本号, BYTE MinorLinkerVersion; / 0 x1b,这两个值都不可靠 DWORD SizeOfCode; / 0 x1c,可执行代码的长度 DWORD SizeOfInitializedData; / 0 x20,初始化数据的长度(数据节) DWORD Siz

55、eOfUninitializedData; / 0 x24,未初始化数据的长度(bss节) DWORD AddressOfEntryPoint;/ 0 x28,代码的入口RVA地址,程序从这开始执行 DWORD BaseOfCode; / 0 x2c,可执行代码起始位置,意义不大 DWORD BaseOfData; / 0 x30,初始化数据起始位置,意义不大 / NT 附加域: / DWORD ImageBase; / 0 x34,载入程序首选的RVA地址 DWORD SectionAlignment; / 0 x38,加载后节在内存中的对齐方式 DWORD FileAlignment; /

56、 0 x3c,节在文件中的对齐方式(待续)共八十三页2.6.3 PE文件格式2.6 EXE文件(wnjin)的格式(续前) WORD MajorOperatingSystemVersion; / 0 x3e,操作系统主/次版本, WORD MinorOperatingSystemVersion; / 0 x40,Loader并没有用这两个值 WORD MajorImageVersion; / 0 x42,可执行文件主/次版本 WORD MinorImageVersion; / 0 x44 WORD MajorSubsystemVersion; / 0 x46,子系统版本号 WORD Minor

57、SubsystemVersion; / 0 x48 DWORD Win32VersionValue; / 0 x4c,Win32版本,一般是0 DWORD SizeOfImage; / 0 x50,程序调入后占用内存大小(字节) DWORD SizeOfHeaders; / 0 x54,文件头的长度之和 DWORD CheckSum; / 0 x58,校验和 WORD Subsystem; / 0 x5c,可执行文件的子系统 WORD DllCharacteristics; / 0 x5e,何时DllMain被调用,一般为0 DWORD SizeOfStackReserve; / 0 x60,

58、初始化线程时保留的堆栈大小 DWORD SizeOfStackCommit; / 0 x64,初始化线程时提交的堆栈大小 DWORD SizeOfHeapReserve; / 0 x68,进程初始化时保留的堆大小 DWORD SizeOfHeapCommit; / 0 x6c,进程初始化时提交的堆大小 DWORD LoaderFlags; / 0 x70,装载标志,与调试相关 DWORD NumberOfRvaAndSizes; / 0 x74,数据目录的项数,一般是16 IMAGE_DATA_DIRECTORY DataDirectoryIMAGE_NUMBEROF_DIRECTORY_EN

59、TRIES; IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;共八十三页2.6.3 PE文件格式节表是紧挨着NT映像头的一结构数组,其成员(chngyun)的数目由映像文件头中NumberOfSections决定2.6 EXE文件(wnjin)的格式#define IMAGE_SIZEOF_SHORT_NAME 8typedef struct _IMAGE_SECTION_HEADER UCHAR NameIMAGE_SIZEOF_SHORT_NAME; / 节名 union ULONG PhysicalAddress; / OBJ文件中表示本节物

60、理地址 ULONG VirtualSize; / EXE文件中表示节的实际字节数 Misc; ULONG VirtualAddress; / 本节的RVA ULONG SizeOfRawData; / 本节经过文件对齐后的尺寸 ULONG PointerToRawData; / 本节原始数据在文件中的位置 ULONG PointerToRelocations; / OBJ文件中表示本节重定位信 / 息的偏移,EXE文件中无意义 ULONG PointerToLinenumbers; / 行号偏移 USHORT NumberOfRelocations; / 本节需重定位的数目 USHORT Nu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论