《病毒原理》

来源:百度文库 编辑:神马文学网 时间:2024/04/29 07:42:01

《病毒原理》

看完此文以后,你可以初步掌握病毒的原理,将消除对病毒的神秘感,将不会再
恐惧病毒。如果,你很熟悉汇编,则可以轻而易举的编写病毒,不过一切后果自负!
>再次声明:编写病毒并传播对社会造成危害是违法的,如果编写病毒只在自己的电脑
>上实验,并严格控制使病毒不传播出去,则是个人的自由!不要忘记我们研究病毒的
>最终目的是为了消灭病毒!
                          ***** 一、引导型病毒******
     病毒能感染的只有可执行代码,在电脑中可执行代码只有引导程序和可执行文件,
当然,还有一类特殊的病毒,如WORD宏病毒,当然宏也是可执行代码。病毒感染BIOS
也是有可能的,不过并无太大意义,因为,现在的FLASHROM的BIOS都是可以写保护的,
再说,万一出事,用无毒的再写一遍即可。所以,一般将病毒分为引导型,文件型,或
是混合型。
    想要了解引导型病毒的原理,首先要了解引导区的结构。软盘只有一个引导区,称
为DOS BOOT SECTER ,只要软盘已格式化,就已存在。其作用为查找盘上有无IO.SYS
DOS.SYS,若有则引导,若无则显示‘NO SYSTEM DISK...’等信息。硬盘有两个引导区,
在0面0道1扇区的称为主引导区,内有主引导程序和分区表,主引导程序查找激活分区,
该分区的第一个扇区即为DOS BOOT SECTER。绝大多数病毒感染硬盘主引导扇区和软盘
DOS引导扇区。
     下面给出基本引导病毒的原理图:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  带毒硬盘引导
      ├┤
       \/
BIOS将硬盘主引导区           
读到内存0:7C00处                  ;这是千古不变的,不知谁定的.
控制权转到主引导程序      
      ├┤(病毒)
       \/
将0:413单元的值减少1K             ;BIOS上机自检,将常规内存大小存入0:413;
      ├┤      (或nK)             -1K 后,系统以后将不在访问最高段的1K内存
       \/                        
计算可用内存高段地址              
将病毒移到高段继续执行  
      ├┤
       \/
修改INT13地址,指向病毒传染段      
将原INT13地址保存在某一单元
      ├┤
       \/
病毒任务完成,将原引导区调
入0:7C00执行
      ├┤
       \/
  机器正常引导
   带毒软盘引导                      病毒13号中断入口
      ├┤                                ├┤
       \/                                  \/
  判断硬盘是否有毒,                    是在读写软盘吗?-----否
  若无毒则传染                            ├┤是            ├┤
      ├┤                                 \/               ├┤
       \/                              此软盘有毒吗?---是   ├┤
    以下同上                              ├┤否       ├┤ ├┤
                                          \/          ├┤ ├┤
(传染时将病毒写入                       对其传染       ├┤ ├┤
主引导扇区,将原                           ├┤         ├┤ ├┤
引导程序存入某一                           \/           \/   \/
扇区)                                      执行原INT 13<-----   
     以上是引导型病毒的基本框图,不论是最古老,还是最新的,万变不离
其中.只不过在各细节个人的技巧不同罢了.
    驻留内存:一般采取修改0:413地址的方法,因为引导时,DOS还未加载
这是唯一的方法,但有很大的缺点,启动后用MEM查看发现常规内存的总量
少于640K,不够隐蔽,当然有办法解决,可以修改INT 8,检测INT 21是否
建立,若建立则可采用DOS功能驻留内存.详细见文件型病毒.
    隐形技术:当病毒驻留时,读写引导区均对原引导区操作,就好象
没有病毒一样.
    加密技术:一般加密分区表,使无毒盘启动,无法读取硬盘.
    具体细节及其他技术以后再说.
    引导型病毒的优点:隐蔽性强,兼容性强,只要编的好,是不容易发现
的,通用于DOS WINDOWS WIN95 操作系统.
    缺点:很多,传染速毒慢,一定要带毒软盘启动才能传到硬盘,杀毒
容易,只需改写引导区即可,如: fdisk/mbr ,kv200/k. KV200能查出
所有引导型病毒,底板能对引导区写保护,所以现在纯引导型病毒已
很少了.俺已经想出突破底版和KV200的方法,以后再说.
             **********二.文件型病毒***********
     要了解文件型病毒的原理,首先要了解文件的结构.COM 文件比较简单,
病毒要感染COM文件有两种方法,一种是将病毒加在COM前部,一种是加在文件
尾部,见下图:
         --------            ├-------------┤
        ├ 病毒 ┤           ├JMP XXXX:XXXX┤ (原文件的前3字节被修改)
        ├------┤           ├-------------┤
        ├原文件┤           ├   原程序     ┤
         --------            ├-------------┤
                            ├     病毒     ┤
                             ---------------
    EXE 文件比较复杂,每个EXE文件都有一个文件头,结构如下:
                EXE文件头信息      
          ---------------------------------
         ├ 偏移量 ┤     意义              ┤
         ├00h-01h ┤MZ'EXE文件标记        ┤
         ├2h-03h  ┤文件长度除512的余数   ┤
         ├04h-05h ┤...............商     ┤
         ├06h-07h ┤重定位项的个数        ┤
         ├08h-09h ┤文件头除16的商        ┤
         ├0ah-0bh ┤程序运行所需最小段数 ┤
         ├0ch-0dh ┤..............大.... ┤
         ├oeh-0fh ┤堆栈段的段值 (SS)     ┤
         ├10h-11h ┤........sp            ┤
         ├12h-13h ┤文件校验和            ┤
         ├14h-15h ┤IP                    ┤
         ├16h-17h ┤CS                    ┤
         ├18h-19h ┤............          ┤
         ├1ah-1bh ┤............          ┤
         ├1ch     ┤............          ┤
          ---------------------------------
   当DOS加载EXE文件时,根据文件头信息,调入一定长度的文件,设置SS,SP
从CS:IP 开始执行.病毒一般将自己加在文件的末端,并修改CS,IP的值指向
病毒起始地址,并修改文件长度信息和SS,SP.
                ****三。混合型病毒****
   所谓混合型,即既能感染引导区,又能感染文件的病毒。但并非简单
的将文件型病毒和引导型病毒简单的加在一起,其中有一个转换过程,
这是最关键的。一般采取以下手法:文件中的病毒执行时将病毒写入引导
区,这时很容易理解的。染毒硬盘启动时,用引导型病毒的方法驻留内存,
但此时DOS并未加载,无法修改INT21,也就无法感染文件,可以用这样的
办法,修改INT 8 ,保存INT 21目前的地址,用INT 8服务程序监测INT 21
的地址是否改变,若改变则说明DOS已加载,则可修改INT 21指向病毒传染
段。以上是混合型病毒关键之处。