您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 计算机病毒的代码分析与实现(1).
安徽省巢湖学院计算机与信息工程学院课程设计报告课程名称《网络攻防技术与实践》课题名称计算机病毒的代码分析与实现专业班级12网络工程2班姓名潘蒙蒙李强强尉言康学号120350841202107712035098联系方式18056261616指导教师孙佑明完成日期:2015年6月20日传染C文件的源码病毒及解毒程序设计1目录1引言……………………………………………………………………………2计算机病毒简介………………………………………………………………3传染C文件源码病毒及解毒程序设计实现…………………………………3.1程序设计思路和分析………………………………………………………3.2程序流程图…………………………………………………………………3.3其中用到函数和结构体的说明……………………………………………3.4程序清单……………………………………………………………………4计算机病毒的演示…………………………………………………………4.1病毒程序VIRUS.C演示过程……………………………………………4.2病毒清除程序REVIRUS.C演示过程……………………………………结束语…………………………………………………………………………(1)(1)(4)(5)(8)(10)(12)(18)(18)(22)(23)传染C文件的源码病毒及解毒程序设计21.引言:计算机病毒发源于美国,是随着计算机技术的发展而产生的一种畸形怪胎,由于计算机的硬件和操作系统的不尽完善而使得计算机病毒层出不穷,并迅速蔓延。那么什么是计算机病毒呢?美国计算机安全专家FrederickCohen博士对计算机病毒给出一个早期的定义:计算机病毒是一个靠修改其他程序,并把自身复制品传染给其它程序的程序。现在可以简单地说:计算机病毒是人为的一种计算机程序,这种程序隐藏在计算机系统的可存取信息资源中,利用计算机系统信息资源进行生存、繁殖,影响和破坏计算机系统的运行。计算机病毒是人为制造的具有再生机制、潜伏机制和激发机制的软体,从而决定了计算机病毒是可以在计算机系统上进行试验和模拟的。从防治计算机病毒的角度,静态观测和扫描病毒程序只能在一定程度上反映计算机病毒的存在性,动态模拟和测试可以了解和分析计算机病毒的破坏机制,可以对流行计算机病毒的传播及其危害提出预测和灾难评估。计算机病毒和模拟实验,可以检验反病毒软件及其产品的性能,并可以掌握市场上计算机安全产品的技术水平与发展动向。计算机演示病毒与实际传播的计算机病毒不同,计算机演示病毒是防治计算机病毒的安全教育手段和工具,它不能产生实际性质的破坏作用并易于清除。微型计算机病毒与计算机网络、大型信息系统的计算机病毒有很大的差异,防治计算机病毒的重点应该是计算机网络和大型信息系统。从本质上讲,计算机病毒的模拟和实验目的是寻求有效的检测方法和对抗工具。2.计算机病毒简介计算机病毒的分类:微机系统的计算机病毒按传染方式分为以下三大类:(1)引导型计算机病毒是指既传染磁盘主引导区,又传染DOS的BOOT区的计算机病毒。就一般而言,引导型的计算机病毒出现的传染情况如下:硬盘BOOT区引导程序;软盘BOOT区引导程序;硬盘分区表(主引传染C文件的源码病毒及解毒程序设计3导程序)。(2)文件型计算机病毒。一般传染磁盘上的可执行文件(COM,EXE)。在用户调用染毒的可执行文件时,病毒首先被运行,然后病毒驻留内存伺机传染其他文件或直接传染其他文件。其特点是附着于正常程序文件,成为程序文件的一个外壳或部件。这是较为常见的传染方式。(3)混和型计算机病毒。混和型计算机病毒是指既传染磁盘的引导区又传染可执行文件的计算机病毒(即引导型和文件型计算机病毒)。计算机病毒的构成:计算机病毒是多种多样的,不同类型病毒采用的机制和组成虽然是千奇百怪的,但可以看出病毒的主要组成部分是相同的,工作逻辑也是相同的。它应该由传染模块和表现及破坏模块组成,每个模块又有两个程序段:传染条件判断段和实施段,如下图所示。计算机病毒的特点:(1)刻意编写人为破坏。计算机病毒不是偶然发生的,而是人为编写的有意破坏、严谨精巧的程序段,它是严格组织的程序代码,与所在环境相互适应并紧密配合。编写病毒的动机一般有一下几种情况:为了表现自己和证明自己,处于对上级的不满,出于好奇的“恶作剧”,为了报复,为了纪念某一事件等。(2)自我复制能力。自我复制也称“再生”或“传染”。再生机制是判断是不是计算机病毒的最重要依据。这一点与生物病毒的特点也最为相似。在一定条件下,病毒通过某种渠道从一个文件或一台计算机传染到另病毒程序传染模块表现段传染条件判断段传染段表现条件判断段表现段传染C文件的源码病毒及解毒程序设计4外没有感染的文件或计算机,轻则造成被感染的计算机数据被破坏或工作失常,重则使计算机瘫痪。(3)夺取系统控制权。当计算机在正常程序控制之下运行时,系统运行是稳定的。在这台计算机上可以查看病毒文件的名字,查看或打印计算机病毒代码,甚至复制病毒文件,系统都不会激活并感染病毒。病毒为了完成感染、破坏系统的目的必然要取得系统的控制权,这是计算机病毒的另外一个重要特点。(4)隐蔽性。不经过程序代码分析或计算机病毒代码扫描,病毒程序与正常程序不易区别开。在没有防护措施的情况下,计算机病毒程序取得系统控制权后,可以在很短的时间里大量传染。而在传染后,一般计算机系统仍然能够运行,被感染的程序也能执行,用户不会感到明显的异常,这便是计算机病毒的隐蔽性。(5)潜伏性。大部分病毒在感染系统后一般不会马上发作,它可长期隐藏在系统中,除了传染外,不表现出破坏性,这样的状态可能保持几天,几个月甚至几年,只有在满足其特定条件后才能启动其表现模块,显示发作信息或进行系统破坏。使计算机病毒发作的触发条件主要有以下几种:利用系统时钟提供的时间作为触发器,这种触发机制被大量病毒使用;利用病毒体自带的计数器作为触发器;利用计算机内执行的某些特定操作作为触发器。计算机病毒的常见传染途径:(1)通过软盘:通过使用外界被感染的软盘,例如,不同渠道来的系统盘、来历不明的软件、游戏盘等是最普遍的传染途径。由于使用带有病毒的软盘,使机器感染病毒发病,并传染给未被感染的“干净”的软盘。大量的软盘交换,合法或非法的程序拷贝,不加控制地随便在机器上使用各种软件造成了病毒感染、泛滥蔓延的温床。(2)通过硬盘:通过硬盘传染也是重要的渠道,由于带有病毒机器移到其它地方使用、维修等,将干净的软盘传染并再扩散。(3)通过网络:这种传染扩散极快,能在很短时间内传遍网络上的机器。传染C文件的源码病毒及解毒程序设计5病毒的危害:在计算机病毒出现的初期,说到计算机病毒的危害,往往注重于病毒对信息系统的直接破坏作用,比如格式化硬盘、删除文件数据等,并以此来区分恶性病毒和良性病毒。其实这些只是病毒劣迹的一部分,随着计算机应用的发展,人们深刻地认识到凡是病毒都可能对计算机信息系统造成严重的破坏。计算机病毒的主要危害有:(1)病毒激发对计算机数据信息的直接破坏作用。部分病毒在激发的时候直接破坏计算机的重要信息数据,所利用的手段有格式化磁盘、改写文件分配表和目录区、删除重要文件或者用无意义的“垃圾”数据改写文件、破坏CMOS设置等。(2)占用磁盘空间和对信息的破坏.寄生在磁盘上的病毒总要非法占用一部分磁盘空间,就造成磁盘空间的严重浪费。(3)抢占系统资源。大多数病毒在动态下都是常驻内存的,这就必然抢占一部分系统资源(4)影响计算机运行速度。病毒在进行传染时同样要插入非法的额外操作,特别是传染软盘时不但计算机速度明显变慢,而且软盘正常的读写顺序被打乱。(5)计算机病毒给用户造成严重的心理压力。大多数用户对病毒采取宁可信其有的态度,这对于保护计算机安全无疑是十分必要的,然而往往要付出时间、金钱等方面的代价。仅仅怀疑病毒而冒然格式化磁盘所带来的损失更是难以弥补。病毒的清除:清除病毒有两种方法:人工处理和利用反病毒软件。常用的反病毒软件有:瑞星、金山毒霸和KV3000等软件。但它们在处理病毒时,必须知道某种特别的病毒的信息,然后才能按需要对磁盘进行杀毒。传统的计算机病毒的清除一般是对文件、内存的处理过程,简单的清除方法可以仅仅由重新启动计算机完成。但是如果需要避免再次遭受病毒感染,则必须进行更进一步的操作,如打补丁。传染C文件的源码病毒及解毒程序设计63.传染C文件源码病毒及解毒程序设计实现3.1程序设计思路和分析3.1.1病毒程序VIRUS.C这是一个用C语言写的病毒程序,当激发病毒程序时显示时间,然后返回。病毒程序VIRUS.C可将病毒传染给一个C语言程序。当被病毒感染的程序经编译、连接和执行后,又可以将病毒部分传染给其他的C语言源程序。每执行一次带有病毒的C语言程序,就向C语言源程序传播一次病毒。此程序的设计思路如下:当含有病毒部分的程序被执行时,首先进入病毒程序。它在磁盘上找扩展名为C的匹配文件,如果找到,查找是否有被传染过的标志“INFECTED”。如果有此标志,继续找其它的C文件,直至全部检查一遍。若没有这个标志,则(1)在未被感染的C程序头部加入“INFECTED”已被传染标志。(2)读取病毒文件的头文件,将其插入到即将被感染的文件头部。如果发现有重复则不插入。(3)在主程序中插入“VIRUSES();”调用VIRUSES函数。寻找printf、for、while、break语句,如果找到就在之前插入。(4)在文件尾部插入VIRUSES_SUB子程序。(5)在插入到将感染文件里面的VIRUSES_SUB子程序里面,必须把文件名改为当前自身的文件名,否则被传染后的文件经过编译、连接和运行后不能再继续传染。(6)最后插入VIRUSES子程序。这个子程序里面调用了VIRUSES_SUB,执行到这里返回执行结果信息。其中用到4个出错的返回值,分别是:1:用户文件太大,不传染;2:带病毒文件打不开,不传染;3:带病毒文件读取不成功,不传染;4:查找第一个匹配文件不成功。如果返回值是0代表文件传染成功。传染C文件的源码病毒及解毒程序设计7具体实现过程如下:其中用到的函数和结构体用法参考3.3节。首先导入病毒子程序要用到的三个库文件,分别是dir.h,stido.h,dos.h.在主函数里面只调用VIRUSES函数。紧跟定义VIRUSES函数里面要调用的VIURS_SUB函数。里面定义了若干个变量。ffblk用来保存查找到的匹配文件的信息,用到里面的ff_name变量来保存匹配文件名。然后定义保存未感染的文件和病毒文件的文件型指针变量,分别用是*virus_r和*virus_v.读取文件的缓冲区,放到二维数组a[500][80]里面临时存放。因为此程序对大于500行的C文件不进行传染,所以完全可以放到里面。首先用getdate函数获取系统当前日期并输出。接着用findfirst函数查找扩展名为C的文件,将其信息保存到ffblk里面。用fgets函数读文件的第一行,长度是80-1个字符。然后用strstr函数检测病毒的标志,看文件是否有INFECT这个标志。如果有,表示文件已经被传染,关闭文件,不进行传染。当含有病毒部分的程序被执行时,首先进入病毒程序。它在磁盘上查找*.C的匹配文件,一旦找到,查找“已被传染过”的标志INFECTED。若有此标志,继续找其它*.C文件,直至全部检查一遍。如果没有这个标志,将文件全部读入a[500][80],如果发现文件超过500行,不传染,返回。将文件指针指向文件头,打开带病毒的文件。如果打不开,返回。然后读取带病毒文件的前4行,也就是病毒子程序要用到的头文件,写入将被传染的文件。若不能读取带病毒文件,返回。用n_line变量控制行数,把将被传染文件的源程序写回原文件。其中要进行处理不写入病毒文件已有的包含语句,也就是说使#Include语句不重复。这点是这样实现的:定义一个字符数组charinclude_h[]={“dos.h”,“stdio.h”,“dir.h”};strstr函数查看将被传染文件的头文件是否和*include_h[]相同
本文标题:计算机病毒的代码分析与实现(1).
链接地址:https://www.777doc.com/doc-5899475 .html