1、2019年7月20日,第1页,教学目标,系统引导过程 引导型病毒原理 中断与中断程序设计清除病毒方法,2019年7月20日,第2页,教学重点,引导扇区分析 读写扇区方式 程序常驻内存 引导程序设计 接管中断程序设计,2019年7月20日,第3页,教学过程,预备知识 引导型病毒 实验1:引导程序设计 实验2:接管中断程序设计 清除病毒程序设计,2019年7月20日,第4页,2.1 预备知识, 磁盘数据结构 DOS启动过程 读写扇区方式 程序常驻内存,2019年7月20日,第5页,2.1.1 磁盘数据结构,2019年7月20日,第6页,引导扇区,2019年7月20日,第7页,扇区分布,FAT32表
2、项意义,2019年7月20日,第8页,读写扇区方式,Int 13h 用Debug的命令L和W可以读写分区的扇区 ReadFile,2019年7月20日,第9页,程序常驻内存,2019年7月20日,第10页,2.2 引导型病毒,引导型病毒原理 一个引导型病毒分析,2019年7月20日,第11页,2.2.1 引导型病毒工作原理,引导型病毒是一种在ROM BIOS之后,系统引导时出现的病毒,它先于操作系统,依托的环境是BIOS中断服务程序。引导型病毒是利用操作系统的引导模块放在某个固定的位置,并且控制权的转交方式是以物理位置为依据,而不是以操作系统引导区的内容为依据,因而病毒占据该物理位置即可获得控
3、制权,而将真正的引导区内容搬家转移或替换,待病毒程序执行后,将控制权交给真正的引导区内容,使得这个带病毒的系统看似正常运转,而病毒已隐藏在系统中并伺机传染、发作。,2019年7月20日,第12页,感染前后比较, 软盘中毒前的正常开机程序:开机执行BIOS自我测试POST填入中断向量表启动扇区(Boot sector)IO.SYSMSDOS.SYSCOMMAND.COM。 软盘中毒之后的开机程序:开机执行BIOS自我测试POST填入中断向量表开机型病毒启动扇区(Boot Sector)IO.SYSMSDOS.SYSCOMMAND.COM。 硬盘中毒前的正常开机程序:开机执行BIOS自我测试POS
4、T填入中断向量表硬盘分区表(Partition Table)启动扇区(Boot Sector)IO.SYSMSDOS.SYSCOMMAND.COM。 硬盘中毒之后的开机程序:开机执行BIOS自我测试POST填入中断向量表硬盘分割表(Partition Table)开机型病毒启动扇区(Boot Sector)IO.SYSMSDOS.SYSCOMMAND.COM。,2019年7月20日,第13页,2.2.2 一个引导型病毒分析,2019年7月20日,第14页,2.3 实验1:引导程序设计,编写代码 实现步骤,2019年7月20日,第15页,实现步骤,(1) 准备系统盘 选择一张软盘,在DOS下执行
5、Format A:/S,表示格式化软盘且向它复制DOS系统文件。 (2) 备份主引导扇区数据到软盘可以编写一个程序实现,也可以用Debug实现。这样做的目的是,万一系统崩溃了,还可以用软盘启动恢复。如果用Debug,步骤如下: 建立一个文件,如ddd.txt,随便敲入几个字母,如“aaaaaaaaaaaaaa”。 用命令Debug ddd.txt,将该文件装载到内存。用命令d可以看到文件在内存中位置为126C:0100H126C:010DH,2019年7月20日,第16页,2019年7月20日,第17页,读主引导扇区数据,2019年7月20日,第18页,保存内存数据到文件,2019年7月20日,第19页,移动主引导扇区数据,2019年7月20日,第20页,2.4 实验2:接管中断程序设计,代码演示了在DOS启动前,是如何接管int 13h,使自己的int 13h是如何常驻内存。其中涉及到了0:413h处数据的修改,如何计算自己的int 13h的长度,如何将自己复制到内存高端等。,2019年7月20日,第21页,2.5 清除病毒程序设计,用未被病毒感染的带系统的软盘启动后,用int 13h的功能2在磁盘中寻找被病毒藏匿的原引导扇区代码,用功能3将其回写到本来位置即可。,