全部商品分类

您现在的位置: 全部商品分类 > 电子电脑 > 计算机技术 > 计算机原理与基础

计算机病毒与恶意代码(原理技术及防范第4版21世纪高等学校网络空间安全专业规划教材)

  • 定价: ¥59.5
  • ISBN:9787302516583
  • 开 本:16开 平装
  •  
  • 折扣:
  • 出版社:清华大学
  • 页数:342页
  • 作者:编者:刘功申//孟...
  • 立即节省:
  • 2019-06-01 第4版
  • 2019-06-01 第1次印刷
我要买:
点击放图片

导语

  

    本书的主要内容来源于作者大学本科计算机病毒和恶意代码12年教学经验,8年恶意代码及其防范研究基础,以及前期编写的4本教材。本书的前身《计算机病毒及其防范技术》、《计算机病毒及其防范技术(第2版)》、《恶意代码防范》和《恶意代码与计算机病毒——原理、技术和实践》被多所高校作为教材,得到了大家的支持和认可。同时,这些教材也分别两次获得了“上海交通大学优秀教材特等奖”、“上海市高等教育教材一等奖”。

内容提要

  

    本书详细介绍恶意代码(含传统计算机病毒)的基本原理和主要防治技术,深入分析和探讨恶意代码的产生机制、寄生特点、传播方式、危害表现以及防范和对抗等方面的技术,主要内容包括恶意代码的基本含义、恶意代码的理论模型、恶意代码的结构和技术特征分析、特洛伊木马、勒索软件、Linux系统下的恶意代码、蠕虫、移动终端恶意代码、恶意代码的查杀方法和防治技术,以及常用杀毒软件及其解决方案和恶意代码的防治策略等。
    本书通俗易懂,注重理论与实践相结合,所设计的教学实验覆盖了所有类型的恶意代码,使读者能够举一反三。为了便于教学,本书附带教学课件、实验用源代码以及辅助应用程序版本说明等内容,下载地址为www.tupwk.com.cn/downpage,下载并解压缩后,就可按照教材设计的实验步骤使用。
    本书可作为高等院校信息安全专业和计算机相关专业的教材,也可供广大系统管理员、计算机安全技术人员参考。

作者简介

    刘功申,博士,教授。2003年毕业于上海交通大学计算机科学与技术系,并获得博士学位。2004年起,在上海交通大学网络空间安全学院从事教学科研工作。研究方向包括内容安全、恶意代码及自然语言处理等。主持国家自然科学基金项目3项,“十二五”科技支撑子课题1项,H863项目1项;参与973、国家工程实验室、“十三五”网络空间安全专项、重点基金等项目10项。文本语义分析、情感倾向性分析方面的多项成果应用于网络舆情预警与监测系统。编写了《恶意代码与计算机病毒——原理、技术和实践》《恶意代码防范》《数字内容安全》等教材8部(第一作者5部),获得了上海市高等教育优秀教材奖一等奖2项。指导全国大学生信息安全大赛获得作品决赛一等奖4项,二等奖3项。

目录

第1章  恶意代码概述
  1.1  为什么提出恶意代码的概念
  1.2  恶意代码的概念
  1.3  恶意代码的发展历史
    1.3.1  概念阶段
    1.3.2  朦胧阶段
    1.3.3  第一款真实恶意代码
    1.3.4  PC病毒
    1.3.5  蠕虫插曲
    1.3.6  走向战争
    1.3.7  对抗杀毒软件
    1.3.8  写病毒不再困难
    1.3.9  破坏硬件的病毒
    1.3.10  网络时代:蠕虫
    1.3.11  网络时代:木马
    1.3.12  网络时代:工业互联网恶意代码
    1.3.13  网络时代:物联网恶意代码
    1.3.14  网络时代:勒索型恶意代码
  1.4  恶意代码的种类
  1.5  恶意代码的传播途径
  1.6  感染恶意代码的症状
    1.6.1  恶意代码的表现现象
    1.6.2  与恶意代码现象类似的硬件故障
    1.6.3  与恶意代码现象类似的软件故障
  1.7  恶意代码的命名规则
  1.8  恶意代码的最新趋势
  1.9  习题
第2章  恶意代码模型及机制
  2.1  基本定义
  2.2  基于图灵机的传统计算机病毒模型
    2.2.1  随机访问计算机模型
    2.2.2  随机访问存储程序模型
    2.2.3  图灵机模型
    2.2.4  带后台存储的RASPM模型
    2.2.5  操作系统模型
    2.2.6  基于RASPM_ABS的病毒
  2.3  基于递归函数的计算机病毒的数学模型
    2.3.1  Adlemen病毒模型
    2.3.2  Adlemen病毒模型的分析
  2.4  Internet蠕虫传播模型
    2.4.1  SIS模型和SI模型
    2.4.2  SIR模型
    2.4.3  网络模型中蠕虫传播的方式
  2.5  恶意代码预防理论模型
  2.6  传统计算机病毒的结构和工作机制
    2.6.1  引导模块
    2.6.2  感染模块
    2.6.3  破坏模块
    2.6.4  触发模块
  2.7  习题
第3章  传统计算机病毒
  3.1  引导型病毒编制技术
    3.1.1  引导型病毒编制原理
    3.1.2  引导型病毒实验
  3.21  6位可执行文件病毒编制技术
    3.2.11  6位可执行文件结构及运行原理
    3.2.2  COM文件病毒原理
    3.2.3  COM文件病毒实验
  3.33  2位可执行文件病毒编制技术
    3.3.1  PE文件结构及其运行原理
    3.3.2  PE文件型病毒关键技术
    3.3.3  从Ring3到Ring0的简述
    3.3.4  PE文件格式实验
  3.4  宏病毒
    3.4.1  宏病毒的运行环境
    3.4.2  宏病毒的特点
    3.4.3  经典宏病毒
    3.4.4  Word宏病毒的工作机制
  3.5  综合实验
  综合实验一:32位文件型病毒实验
  综合实验二:类TaiWan No.1病毒实验
  3.6  习题
第4章  Linux恶意代码技术
  4.1  Linux系统的公共误区
  4.2  Linux系统恶意代码的分类
  4.3  Shell恶意脚本
    4.3.1  Shell恶意脚本编制技术
    4.3.2  Shell恶意脚本实验
  4.4  ELF文件格式
  4.5  ELF格式文件感染原理
    4.5.1  无关ELF格式的感染方法
    4.5.2  利用ELF格式的感染方法
    4.5.3  高级感染技术
  4.6  Linux ELF病毒实例
    4.6.1  病毒技术汇总
    4.6.2  原型病毒实现
  4.7  综合实验
  综合实验三:Linux ELF病毒实验
  4.8  习题
第5章  特洛伊木马
  5.1  基本概念
    5.1.1  木马概述
    5.1.2  木马的分类
    5.1.3  远程控制、木马与病毒
    5.1.4  木马的工作流程
    5.1.5  木马的技术发展
  5.2  简单木马程序实验
    5.2.1  自动隐藏
    5.2.2  自动加载
    5.2.3  实现Server端功能
    5.2.4  实现Client端功能
    5.2.5  实施阶段
  5.3  木马程序的关键技术
    5.3.1  植入技术
    5.3.2  自启动技术
    5.3.3  隐藏技术
    5.3.4  远程线程插入实验
    5.3.5  其他技术
  5.4  木马防范技术
    5.4.1  防治特洛伊木马基本知识
    5.4.2  几种常见木马病毒的杀除方法
    5.4.3  已知木马病毒的端口列表
  5.5  综合实验
  综合实验四:网站挂马实验
  综合实验五:BO2K木马实验
  综合实验六:木马病毒清除实验
  5.6  习题
第6章  移动智能终端恶意代码
  6.1  移动终端恶意代码概述
  6.2  智能手机操作系统及其弱点
    6.2.1  智能手机操作系统
    6.2.2  手机操作系统的弱点
  6.3  移动终端恶意代码关键技术
    6.3.1  移动终端恶意代码传播途径
    6.3.2  移动终端恶意代码攻击方式
    6.3.3  移动终端恶意代码的生存环境
    6.3.4  移动终端设备的漏洞
  6.4  Android恶意功能开发实验
    6.4.1  Android短信拦截
    6.4.2  Android电话监听
  6.5  移动终端恶意代码实例
  6.6  移动终端恶意代码的防范
  6.7  移动终端安全防护工具
    6.7.1  国外移动终端安全防护工具
    6.7.2  国内移动终端安全防护工具
  6.8  综合实验
  综合实验七:Android手机木马实验
  6.9  习题
第7章  蠕虫
  7.1  蠕虫的基本概念
    7.1.1  蠕虫的分类
    7.1.2  蠕虫和其他恶意代码的关系
    7.1.3  蠕虫的危害
    7.1.4  “震网”蠕虫
  7.2  蠕虫的特征
  7.3  蠕虫病毒的机制
  7.4  基于RPC漏洞的蠕虫
    7.4.1  RPC漏洞
    7.4.2  冲击波病毒
    7.4.3  冲击波的shellcode分析
    7.4.4  冲击波实验
  7.5  综合实验
  综合实验八:基于U盘传播的蠕虫实验
  7.6  习题
第8章  勒索型恶意代码
  8.1  勒索型恶意代码概述
    8.1.1  全球勒索型恶意代码
    8.1.2  勒索型恶意代码的攻击阶段
    8.1.3  勒索型恶意代码的特性
    8.1.4  勒索型恶意代码出现的原因
  8.2  勒索型恶意代码的历史与现状
    8.2.1  勒索型恶意代码的历史
    8.2.2  技术发展趋势
    8.2.3  最新勒索型恶意代码实例
    8.2.4  勒索型恶意代码加密算法
  8.3  WannaCry恶意代码分析
    8.3.1  基本模块
    8.3.2  详细过程
  8.4  Hidden-Tear源代码分析
    8.4.1  Hidden-Tear的代码特征
    8.4.2  Hidden-Tear关键代码分析
    8.4.3  Hidden-Tear加密的漏洞
  8.5  防范与应对策略
    8.5.1  增强安全意识
    8.5.2  备份重要文件
    8.5.3  网络流量的检测
    8.5.4  网络隔离措施
    8.5.5  更新软件和安装补丁
  8.6  综合实验
  综合实验九:勒索型恶意代码实验
  8.7  总结
  8.8  习题
第9章  其他恶意代码
  9.1  流氓软件
    9.1.1  流氓软件的定义
    9.1.2  应对流氓软件的政策
    9.1.3  流氓软件的主要特征
    9.1.4  流氓软件的发展过程
    9.1.5  流氓软件的分类
  9.2  利用Outlook漏洞的恶意代码
    9.2.1  邮件型恶意代码的传播方式
    9.2.2  邮件型恶意代码的传播原理
    9.2.3  邮件型恶意代码的预防
  9.3  WebPage中的恶意代码
    9.3.1  脚本病毒的基本类型
    9.3.2  Web恶意代码的工作机制
    9.3.3  Web恶意代码实验
  9.4  僵尸网络
  9.5  Rootkit恶意代码
  9.6  高级持续性威胁
    9.6.1  APT的攻击过程
    9.6.2  APT的特征
    9.6.3  典型的APT案例
    9.6.4  APT的防范
  9.7  综合实验
  综合实验十:邮件型恶意代码实验
  9.8  习题
第10章  恶意代码防范技术
  10.1  恶意代码防范技术的发展
  10.2  中国恶意代码防范技术的发展
  10.3  恶意代码防范思路
  10.4  恶意代码的检测
    10.4.1  恶意代码的检测技术
    10.4.2  恶意代码的检测方法
    10.4.3  自动检测程序核心部件
    10.4.4  恶意代码查找实验
  10.5  恶意代码的清除
    10.5.1  恶意代码清除的原理
    10.5.2  恶意代码的清除方法
  10.6  恶意代码的预防
    10.6.1  系统监控技术
    10.6.2  个人防火墙技术
    10.6.3  系统加固技术
  10.7  恶意代码的免疫
    10.7.1  传统恶意代码免疫方法
    10.7.2  人工免疫系统
  10.8  数据备份与数据恢复的意义
    10.8.1  数据备份
    10.8.2  数据恢复
    10.8.3  数据恢复工具
  10.9  综合实验
  综合实验十一:恶意代码检测实验(OAV)
  10.10  习题
第11章  常用杀毒软件及其解决方案
  11.1  恶意代码防范产业发展
  11.2  国内外反病毒软件评测机构
    11.2.1  WildList
    11.2.2  AMTSO
    11.2.3  AV-Test
    11.2.4  Virus Bulletin
    11.2.5  AV-Comparatives
    11.2.6  ICSA实验室
    11.2.7  中国反病毒软件评测机构
  11.3  国内外著名杀毒软件比较
    11.3.1  杀毒软件必备功能
    11.3.2  流行杀毒产品比较
    11.3.3  恶意代码防范产品的地缘性
  11.4  企业级恶意代码防治方案
    11.4.1  企业恶意代码防范需求
    11.4.2  企业网络的典型结构
    11.4.3  企业网络的典型应用
    11.4.4  恶意代码在网络上传播的过程
    11.4.5  企业网络恶意代码防范方案
  11.5  习题
第12章  恶意代码防治策略
  12.1  恶意代码防治策略的基本准则
  12.2  国家层面上的防治策略
  12.3  单机用户防治策略
    12.3.1  一般技术措施
    12.3.2  个人用户上网基本策略
  12.4  如何建立安全的单机系统
    12.4.1  打牢基础
    12.4.2  选好工具
    12.4.3  注意方法
    12.4.4  应急措施
    12.4.5  自我提高
  12.5  企业用户防治策略
    12.5.1  如何建立防御计划
    12.5.2  执行计划
    12.5.3  恶意代码扫描引擎相关问题
    12.5.4  额外的防御工具
  12.6  未来的防范措施
  12.7  恶意代码犯罪相关法律法规基础
  12.8  习题
附录A  计算机病毒相关网上资源
附录B  相关法律法规
参考文献

前言

  

    由于传统的计算机病毒是一个非常狭义的定义,它仅仅概括了感染文件(可执行文件及数据文件)和引导区的恶意代码,无法描述各种新兴恶意代码的特征和内涵。鉴于此,本书采用“恶意代码”这个概念来概括书中内容。
    恶意代码作为信息安全领域的重要一环,近年来在组织对抗、国家博弈、社会稳定方面发挥了双刃剑的作用,引起了社会各界的广泛重视。
    本书的主要内容来源于作者在计算机病毒和恶意代码领域的12年教学经验、8年恶意代码及其防范研究基础以及前期编写的4种教材。本书的前身《计算机病毒及其防范技术》《计算机病毒及其防范技术(第2版)》《恶意代码防范》和《恶意代码与计算机病毒——原理、技术和实践》被多所高校作为教材,得到了大家的支持和认可。同时,这些教材也分别获得了“上海交通大学优秀教材特等奖”“上海市高等教育教材一等奖”。
    书中重点分析恶意代码的运行机制,并通过实验的方式讲解常见恶意代码。在分析恶意代码技术的基础上,重点分析恶意代码的检测和清除技术。此外,还对预防恶意代码的策略和防治方案进行了探讨。全书共分12章,具体内容如下。
    第1章: 恶意代码概述。本章主要介绍恶意代码的基本概念,并在此基础上讲述恶意代码的关键历史转折点、技术分类、传播途径、感染症状、命名规则及未来发展趋势等相关问题。
    第2章: 恶意代码模型及机制。本章主要介绍恶意代码的理论模型,如基于图灵机的传统计算机病毒模型、基于递归函数的计算机病毒的数学模型、恶意代码预防理论模型、传统计算机病毒的结构及工作机制等。
    第3章: 传统计算机病毒。本章主要介绍在DOS、Windows 9x、Windows 2000平台下传统病毒的工作机制和编制技术,并以3种平台下的可执行文件结构为线索,在分析这些文件结构的基础上,引入不同平台的病毒编制技术。为了保证教材的系统性,本章还简要介绍引导型病毒和宏病毒。
    第4章: Linux恶意代码技术。本章在了解Linux安全问题的基础上,探讨Linux恶意代码的概念,分析Linux可执行文件格式(ELF)的运行机制。
    第5章: 特洛伊木马。为了使读者充分了解特洛伊木马,本章详细分析木马的技术特征、木马入侵的一些常用技术以及木马入侵的防范和清除方法。此外,还对几款常见木马程序的防范经验做了较为详细的说明。
    第6章: 移动智能终端恶意代码。本章以手机恶意代码为主线,介绍移动终端恶意代码的概念、技术进展和防范工具,使读者了解未来移动终端设备上的威胁。特别是详细介绍Android下开发恶意行为程序的技术。
    第7章: 蠕虫。本章主要介绍近年来破坏力非常大的蠕虫(Worm)的基本特征、技术特征和工作机制,并且详细介绍基于RPC漏洞和U盘传播的蠕虫技术。
    第8章: 勒索型恶意代码。2013年兴起的勒索型恶意代码是恶意代码领域的最新家族。本章主要介绍勒索型恶意代码的概念、原理、危害及防范技术。以最流行的WannaCry为例,讲解勒索型恶意代码的结构及源代码。同时,本章还以HiddenTear为例,设计了一个实验。
    第9章: 其他恶意代码。本章对近年来新兴的流氓软件、Outlook漏洞恶意代码、WebPage恶意代码、僵尸网络、Rootkit恶意代码和APT(高级持续威胁)做了介绍,并对其中典型恶意代码的编制技术做了详细讲解。
    第10章: 恶意代码防范技术。本章以检测、清除、预防、防治、数据和策略6个层次为主要思路,介绍恶意代码的诊断原理和方法、清除原理和方法、主动和被动防治技术以及数据备份和数据恢复等。
    第11章: 常用杀毒软件及其解决方案。本章通过介绍企业网络的典型结构、典型应用和网络时代的病毒特征,得出企业网络防范恶意代码体系对技术和工具的需求,从而给出一些典型恶意代码防治体系解决方案。
    第12章: 恶意代码防治策略。本章通过讨论防御性策略得到的不同建议来避免计算机受到恶意代码的影响。本章侧重于全局策略和规章,并且针对企业用户所讲述的内容比针对单机用户的要多一些。本章还就如何制订一个防御计划,如何挑选一个快速反应小组,如何控制住恶意代码的发作,以及安全工具的选择等问题提出了一些建议。
    在本书完稿之际,作者对上海交通大学教材出版基金的资助表示衷心感谢; 感谢教学12年来听过作者计算机病毒原理和恶意代码防范课程的所有学生,他们为作者的讲义提出了很多宝贵意见; 感谢各类参考资料的提供者,这些资料既充实了作者的教材,也丰富了作者的知识; 感谢清华大学出版社的各位编辑,他们耐心地加工我的书稿。
    为便于教学,本书提供教学课件和实验源代码,可通过清华大学出版社的官方网站(www.tup.com.cn)下载。
    由于作者水平有限,书中难免有疏漏之处,恳请读者批评指正,以使本书得以进一步改进和完善。
    作者
    2019年1月
    于上海交通大学思源湖畔

精彩页(或试读片断)

  

    第3章传统计算机病毒
    视频讲解
    传统型计算机病毒是最原始的几类计算机病毒,主要包括感染引导区的病毒,感染可执行程序的病毒和感染数据文件的病毒。除了本章讲解的几个计算机病毒外,感染Linux系统可执行程序的病毒也是传统计算机病毒的一类代表。基于章节安排的考虑,Linux系统下感染可执行文件的病毒放在本书第4章介绍。
    DOS环境下的病毒数量已经定格在了5000多种。DOS平台是病毒编制者(VXer)的乐园,因为程序员可以在该平台下自由地读、写、控制系统的所有资源。Windows平台的出现促使计算机病毒技术迅速向新平台转化,Windows 9x(包括Windows 95/98/Me)平台下的病毒曾经繁荣一时,虽然Windows 9x通过使用设备驱动和32位程序来管理文件系统,给病毒编制带来了一定的麻烦,但是VXer们还是分别利用Ring3和Ring0执行权限达到了目的。以NT内核为基础的Windows 2000/NT/2003/XP等操作系统,进一步改进了系统的安全性,此时,虽然利用Ring3执行权限的病毒可以轻松转到新平台上来,但是进入Ring0难度进一步加大。随着Windows Vista、Windows 7等的安全性进一步提高,利用Ring0执行权限的新病毒越来越难写,写传统型计算机病毒简直到了不可能的地步。
    伴随着操作系统的不断进步,可执行文件的格式也发生了巨大变化。它包括4个阶段: DOS中以COM为扩展名的可执行文件和以EXE为扩展名的MZ格式的可执行文件; Windows 3.x下出现的NE(New Executable)格式的EXE和DLL文件; Windows 3.x和Windows 9x所专有的LE(Linear Executable,其专用于VxD文件); Windows 9x和Windows NT/2000/XP下的32位的PE(Portable Executable)格式文件。总之,COM、MZ和NE属于16位文件格式,PE属于Win32文件格式,LE可以兼容16位和32位两种环境。
    当编制计算机病毒的先驱者们痴迷于他们高超的汇编语言技术和成果时,可能不会想到后继者能以更加简单的手法制造影响力更大的病毒。宏病毒是感染数据文件的病毒的典型代表,其中,Microsoft Word宏病毒又是宏病毒家族中最具有代表性的一类。像其他类型的病毒一样,宏病毒也经历了从产生到发展,再到衰退的过程。曾经,宏病毒感染了世界上几乎所有的Windows计算机,占了当时恶意代码总量的50%。
    本章主要介绍DOS、Windows平台下引导区病毒、可执行文件病毒、感染数据文件的宏病毒等传统型计算机病毒,并设计了多个实验来展示这些病毒。
    本章学习目标
    (1) 了解COM、EXE、NE、PE可执行文件格式。
    (2) 了解引导型病毒的原理及实验。
    (3) 掌握COM文件型病毒的原理及实验。
    (4) 掌握PE文件型病毒及实验。
    (5) 掌握宏病毒的原理及实验。
    3.1引导型病毒编制技术
    学习本节前建议先学习硬盘主引导区结构、掌握主引导程序以及DOS操作系统的中断知识。
    3.1.1引导型病毒编制原理
    20世纪90年代中期之前,引导型病毒一直是最流行的病毒类型。直到2010年3月由金山安全反病毒专家发现了Windows系统下引导型病毒“鬼影”,这彻底颠覆了人们的传统认识——Windows下不会再有引导型病毒。
    引导型病毒首先感染软盘的引导区,然后再蔓延至硬盘并感染硬盘的主引导记录(Main Boot Record,MBR)。一旦MBR被病毒感染,病毒就试图感染软驱中的软盘引导区。引导区病毒是这样工作的: 由于病毒隐藏在软盘的第一扇区,使它可以在系统文件装入内存之前,先进入内存,从而获得对操作系统的完全控制,这就使它得以传播并造成危害。引导型病毒常常用自身的程序替代MBR中的程序,并移动扇区到硬盘的其他存储区。由于PC开机后,将先执行主引导区的代码,因此病毒可以获得第一控制权,在引导操作系统之前,完成以下工作。
    (1) 减少系统可用最大内存量,以供自己需要。
    (2) 修改必要的中断向量,以便传播。
    (3) 读入病毒的其他部分,进行病毒的拼装。病毒首先从已标记簇的某扇区读入病毒的其他部分,这些簇往往被标记为坏簇(但是文件型病毒则不必如此,二者混合型也不必如此)。然后,再读入原引导记录到0000: 7C00H处,跳转执行。引导型病毒的代码如下。
    mov cl,06h
    shl ax,cl ;ax =8F80
    add ax,0840h ;ax =97c0
    mov es,ax
    mov si,7c00h ;si = 7c00
    mov di,si
    mov cx,0100h
    repz movsw ;//将病毒移到高端
    v2: push ax
    pop ds
    push ax
    mov bx,7c4bh
    push bx
    ret ;//指令执行转入高端内存
    call v3
    v3: xor ah,ah ;ah=0
    int 13h
    mov ah,80h
    and byte ptr ds:[7df8h],al
    v4: mov bx,word ptr ds:[7df9h] ;//读入病毒的其他部分
    push cs
    pop ax ; ax=97c0
    sub ax,20h ; ax=97a0
    mov es,ax ; es=97a0
    call v9
    mov bx,word ptr ds:[7df9h] ;load logic sector id
    inc bx ;bx++ is boot sector
    mov ax,0ffc0h ;ffc0:8000 = 0000:7c00//读入原引导分区内容
    mov es,ax
    call v9
    xor ax,ax ;AX=0
    mov byte ptr ds:[7df7h],al ;flag = 0
    v5: mov ds,ax ;ds=0
    mov ax,word ptr ds:[4ch]
    mov bx,word ptr ds:[4eh] ;//修改中断向量
    mov word ptr ds:[4ch],7cd6h
    mov word ptr ds:[4eh],cs ;now int13h had been changed
    push cs
    pop ds ;ds=cs
    mov word ptr ds:[7d30h],ax ;save original int13 vector
    mov word ptr ds:[7d32h],bx
    v6: mov dl,byte ptr ds:[7df8h] ;load drive letter
    v7: jmp 0000:7C00
    db 0eah,00h,7ch,00h,00h ;//这里是个跳转指令的二进制代码
    (4) 读入原主引导分区,转去执行操作系统的引导工作。这部分工作可以参照硬盘引导程序。
    3.1.2引导型病毒实验
    【实验目的】
    通过实验,了解引导区病毒的感染对象和感染特征,重点学习引导病毒的感染机制和恢复感染病毒文件的方法,提高汇编语言的使用能力。
    【实验内容】
    本实验需要完成的内容如下。
    (1) 引导阶段病毒由软盘感染硬盘实验。通过触发病毒,观察病毒发作的现象和步骤学习病毒的感染机制; 阅读和分析病毒的代码。
    (2) DOS运行时病毒由硬盘感染软盘的实现。通过触发病毒,观察病毒发作的现象和步骤学习病毒的感染机制; 阅读和分析病毒的代码。
    【实验环境】
    (1) VMWare Workstation5.5.3。
    (2) MSDOS 7.10。
    【实验素材】
    本书配套素材experiment目录下的bootvirus目录。
    【实验步骤】
    第一步: 环境安装。
    安装虚拟机VMWare,在虚拟机环境内安装MSDOS 7.10。安装步骤参考本书配套素材。
    第二步: 软盘感染硬盘。
    (1) 运行虚拟机,检查目前虚拟硬盘是否含有病毒。图31所示为没有病毒正常启动硬盘的状态。
    图31没有病毒正常启动硬盘的状态
    (2) 在本书配套素材中复制含有病毒的虚拟软盘virus.img。
    (3) 将含有病毒的软盘插入虚拟机引导,可以看到闪动的字符“*^_^*”,如图32所示。按任意键进入图33所示的画面。
    图32出现字符
    图33病毒画面
    第三步: 验证硬盘已经被感染。
    (1) 取出虚拟软盘,通过硬盘引导,再次出现了病毒的画面(图34)。
    图34再次出现病毒画面
    (2) 按任意键后正常引导了DOS系统(图35)。可见,硬盘已经被感染。
    图35硬盘已被感染
    第四步: 硬盘感染软盘。
    (1) 下载empty.img,并且将它插入虚拟机,启动计算机,由于该盘为空,如图36所示。
    图36软盘为空时的显示界面
    (2) 取出虚拟软盘,从硬盘启动,通过命令format A: /q快速格式化软盘。可能提示出错,这时只要按R键即可,如图37所示。
    (3) 成功格式化后的结果如图38所示。
    (4) 不要取出虚拟软盘,重新启动虚拟机,这时是从empty.img引导,可以看到病毒的画面,如图39所示。按任意键进入如图310所示的画面。可见,病毒已经成功由硬盘传染给了软盘。
    图37格式化软盘
    图38格式化后的效果
    图39病毒画面
    图310病毒由硬盘传染给了软盘
    3.216位可执行文件病毒编制技术
    3.2.116位可执行文件结构及运行原理
    文件型病毒是病毒中的大家族,顾名思义,该病毒主要是感染文件(包括COM、EXE、DRV、BIN、OVL和SYS等扩展名的文件)。当它们激活时,感染文件又把自身复制到其他干净文件中,并能在存储介质中保存很长时间,直到病毒又被激活。由于技术的原因,文件型病毒的活力远比引导型病毒强。目前存在着数千种文件型病毒,它们不但活动在DOS 16位环境中,而且在Windows 32位系统中依然非常活跃,同时,有些文件型病毒能很成功地感染OS2、Linux、UNIX和Macintosh环境中的文件。编制文件型病毒的关键是分析操作系统中的文件结构及其执行原理。本节主要介绍16位系统中常见的文件结构及其运行原理,为后续章节做准备。
    1. COM格式
    最简单的可执行文件就是DOS下的COM文件。由于当时计算机64KB内存的限制,就产生了COM文件。COM格式文件最大为64KB,内含16位程序的二进制代码映像,没有重定位信息。COM文件包含程序二进制代码的一个绝对映像,也就是说,为了运行程序准确的处理器指令和内存中的数据,DOS通过直接把该映像从文件复制到内存来加载COM程序,系统不需要做重定位工作。
    为加载一个COM程序,DOS试图分配内存,因为COM程序必须位于一个64KB的段中,所以COM文件的大小不能超过65 024B(64KB减去用于PSP的256B和用于一个起始堆栈的至少256B)。如果DOS不能为程序、一个PSP(Program Segment Prefix,程序段前缀)和一个起始堆栈分配足够内存,则分配尝试失败。否则,DOS分配尽可能多的内存(直至所有保留内存),即使COM程序本身不能大于64KB。在试图运行另一个程序或分配另外的内存之前,大部分COM程序释放任何不需要的内存。分配内存后,DOS在该内存的头256B建立一个PSP。结构如表31所示。
    表31COM格式的结构及说明
    偏 移 大 小长度/Byte说明
    0000h2中断20H
    0002h2以字节计算的内存大小(利用该项可看出是否感染引导型病毒)
    0004h1保留
    0005h5至DOS的长调用
    000Ah2INT 22H入口IP
    000Ch2INT 22H入口CS
    000Eh2INT 23H入口IP
    0010h2INT 23H入口CS
    0012h2INT 24H入口IP
    0014h2INT 24H入口CS
    0016h2父进程的PSP段值(可测知是否被跟踪)
    续表
    偏 移 大 小长度/Byte说明
    0018h14存放20个SOFT号
    002Ch2环境块段地址(从中可获知执行的程序名)
    002Eh4存放用户栈地址指针
    0032h1E保留
    0050h3DOS调用(INT 21H/RETF)
    0053h2保留
    0055h7扩展的FCB头
    005Ch10格式化的FCB1
    006Ch10格式化的FCB2
    007Ch4保留
    0080h80命令行参数长度
    0081h127命令行参数
    如果PSP中的第一个FCB含有一个有效驱动器标识符,则置AL为00H,否则为0FFH。DOS还置AH为00H或0FFH,这依赖于第二个FCB是否含有一个有效驱动器标识符。创建PSP后,DOS在PSP后立即开始(偏移100H)加载COM文件,它置SS、DS和ES为PSP的段地址,接着创建一个堆栈。为了创建这个堆栈,DOS置SP为0000H。如果没有分配64KB内存,则要求置寄存器大小是所分配的字节总数加2的值。最后,它把0000H推进栈中,这是为了保证与早期DOS版本上设计的程序的兼容性。
    DOS通过控制传递偏移100H处的指令而启动程序。程序设计者必须保证COM文件的第一条指令是程序的入口点。因为程序是在偏移100H处加载,所以所有代码和数据偏移也必须相对于100H。汇编语言程序设计者可通过设置程序的初值为100H保证这一点(例如,通过在源代码的开始使用语句org 100H)。
    2. MZ格式
    COM发展下去就是MZ格式的可执行文件,这是DOS中具有重定位功能的可执行文件格式。MZ可执行文件内含16位代码,在这些代码之前加了一个文件头,文件头中包括各种说明数据,例如,第一句可执行代码执行指令时所需要的文件入口点、堆栈的位置、重定位表等。操作系统根据文件头的信息将代码部分装入内存,然后根据重定位表修正代码,最后在设置好堆栈后从文件头中指定的入口开始执行。因此DOS可以把MZ格式的程序放在任何它想要的地方。图311所示为MZ格式的可执行文件的简单结构示意图。
    MZ标志
    其他信息
    重定位表的字节偏移量
    MZ文件头
    重定位表重定位表
    可重定位程序映像二进制代码
    图311MZ格式文件结构示意图
    // MZ格式可执行程序文件头
    struct HeadEXE
    {
    WORD wType;// 00H MZ标志
    WORD wLastSecSize;// 02H最后扇区被使用的大小
    WORD wFileSize;// 04H文件大小
    WORD wRelocNum;// 06H重定位项数
    WORD wHeadSize;// 08H文件头大小
    WORD wReqMin;// 0AH最小所需内存
    WORD wReqMax;// 0CH最大所需内存
    WORD wInitSS;// 0EH SS初值
    WORD wInitSP;// 10H SP初值
    WORD wChkSum;// 12H校验和
    WORD wInitIP;// 14H IP初值
    WORD wInitCS;// 16H CS初值
    WORD wFirstReloc;// 18H第一个重定位项位置
    WORD wOverlap;// 1AH覆盖
    WORD wReserved[0x20];// 1CH保留
    WORD wNEOffset;// 3CH NE头位置
    };
    3. NE格式
    为了保持对DOS的兼容性并满足Windows的需要,Windows 3.x中出现的NE格式的可执行文件中保留了MZ格式的头,同时NE文件又加了一个自己的头,之后才是可执行文件的可执行代码。NE类型包括了EXE、DLL、DRV和FON 4种类型的文件。NE格式的关键特性是它把程序代码、数据及资源隔离在不同的可加载区中,借由符号输入和输出,实现所谓的运行时动态链接。图312所示为NE格式的可执行文件的结构示意图。
    MSDOS头
    保留区域
    Windows头偏移
    DOS Stub程序DOS文件头
    信息块
    段表
    资源表
    驻留名表
    模块引用表
    引入名字表
    入口表
    非驻留名表NE文件头
    代码段和数据段
    重定位表程序区
    图312NE格式文件结构示意图
    16位的NE格式文件装载程序(NE Loader)读取部分磁盘文件,并生成一个完全不同的数据结构,在内存中建立模块。当代码或数据需要装入时,装载程序必须从全局内存中分配出一块,查找原始数据在文件中的位置,找到位置后再读取原始的数据,最后再进行一些修正。另外,每一个16位的模块(Module)要负责记住现在使用的所有段选择符,该选择符表示该段是否已经被抛弃等信息。