计算机病毒的原理(不断更新)

到底什么病毒才是蠕虫

     “计算机病毒”与医学上的“病毒”不同,它不是天然存在的,是某些人利用计算机软、硬件所固有的脆弱性,编制成的具有特殊功能的程序,通常人们称之为电脑病毒。1994年2月18日,我国正式颁布实施了《中华人民共和国计算机信息系统安全保护 条例》,在《条例》第二十八条中明确指出:“计算机病毒,是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码。”
计算机病毒之所以被称为“病毒”,主要是由于它有类似自然界病毒的某些特征。其主要特征有:(1)隐蔽性,指病毒的存在、传染和对数据的破坏过程不易为计算机操作人员发现;寄生性,计算机病毒通常是依附于其它文件而存在的;(2)传染性,指计算机病毒在一定条件下可以自我复制,能对其它文件或系统进行一系列非法操作,并使之成为一个新的传染源。这是病毒的最基本特征;(3)触发性,指病毒的发作一般都需要一个激发条件,可以是日期、时间、特定程序的运行或程序的运行次数等等,如臭名昭著的CIH病毒就发作于每个月的26日;(4)破坏性:指病毒在触发条件满足时,立即对计算机系统的文件、资源等运行进行干扰破坏;(5)不可预见性,指病毒相对于防毒软件永远是超前的,理论上讲,没有任何杀毒软件能将所有的病毒杀除。
从运作过程来看,计算机病毒可以分为三个部分,即病毒引导程序、病毒传染程序、病毒病发程序。从破坏程度来看,计算机病毒可分为良性病毒和恶性病毒;根据传播方式和感染方式,可分为引导型病毒、分区表病毒、宏病毒、文件型病毒、复合型病毒等。
计算机病毒的危害主要表现在三大方面,一是破坏文件或数据,造成用户数据丢失或毁损;二是抢占系统网络资源,造成网络阻塞或系统瘫痪;三是破坏操作系统等软件或计算机主板等硬件,造成计算机无法启动。
 
 
 
 
 
 
 
 
 
 
 
 
 
电脑病毒的起源
    电脑病毒的历史:磁蕊大战

  电脑病毒并非是最近才出现的新产物, 事实上, 早在一九四九年, 距离第一部商用电脑的出现仍有好几年时, 电脑的先驱者约翰.范纽曼(John Von Neumann)在他所提出的一篇论文 [复杂自动装置的理论及组织的进行] , 即已把病毒程式的蓝图勾勒出来, 当时, 绝大部份的电脑专家都无法想像这种会自我繁植的程式是可能的, 可是少数几个科学家默默的研究范纽曼的所提出的概念, 直到十年之後, 在美国电话电报公司(AT&T) 的贝尔(Bell)实验室中, 这些概念在一种很奇怪的电子游戏中成形了, 这种电子游戏叫做 [磁蕊大战] (core war)
磁蕊大战是当时贝尔实验室中三个年轻程式人员在工馀想出来的, 他们是道格拉斯麦耀莱(H, Douglas McIlroy), 维特.维索斯基(Victor Vysottsky)以及罗伯.莫里斯(Robert T. Morris), 当时三人年纪都只有二十多岁.
 
附注: Robert T. Morris 就是後来写了一个 Worm, 把 Internet 搞的天翻地覆的那个 Robert T. Morris Jr. 的爸爸, 当时大 Morris 刚好是负责 Arpanet网路安全 .
 
电脑病毒的老祖宗:
 
   磁蕊大战的玩法如下:两方各写一套程式, 输入同一部电脑中, 这两套程式在电脑的记忆系统内互相追杀,有时它们会放下一些关卡,有时会停下来修理(重新写)被对方破坏的几行指令 ;当它被困时,也可以把自己复制一次,逃离险境,因为它们都在电脑的记忆磁蕊中游走,因此得到了磁蕊大战之名.这个游戏的特点,在於双方的程式进入电脑之後,玩游戏的人只能看著萤幕上显示的战况,而不能做任何更改,一直到某一方的程式被另一方的程式完全 [吃掉] 为止.
   磁蕊大战是个笼统的名称,事实上还可细分成好几种,麦耀莱所写的程式叫 [达尔文]这包含了 [物竞天择,适者生存] 的意思 . 它的游戏规则跟以上所描述的最接近,双方以组合语言(Assembly Language)各写一套程式,叫有机体(organism),这两个有机体在电脑里争斗不休,直到一方把另一方杀掉而取代之,便算分出胜负. 在比赛时 Morris 经常匠心独具,击败对手.
   另外有个叫爬行者程式(Creeper)的,每一次把它读出时,它便自己复制一个副本.此外,它也会从一部电脑[爬]到另一部有连线的电脑.很快地电脑中原有资料便被这些爬行者挤掉了.爬行者的微一生存目地是繁殖.
   为了对付[爬行者],有人便写出了[收割者](Reaper).它的唯一生存目的便是找到爬行者,把它们毁灭掉.当所有爬行者都被收割掉之後,收割者便执行程式中最後一项指令:毁灭自己,从电脑中消失.
   [侏儒](Dwarf)并没有达尔文等程式聪明.却可是个极端危险人物.它在记忆系统中迈进,每到第五个[地址](address)便把那里所储存的东西变为零,这会使的原本的程式停摆.
    最奇特的就是一个叫[印普](Imp)的战争程式了,它只有一行指令,那就是MOV 01MOV是[MOVE]的代表,即移动的意思 .它把身处的地址中所载的[0]写(移)到下一个地址中,当印普展开行动之後,电脑中原有的每一行指令都被改为[MOV 01].换句话说,萤光幕上留下一大堆[MOV 01].
   [双子星](Germini)也是个有趣的家伙.它的作用只有一个:把自己复制,送到下一百个地址後,便抛弃掉[正本].
   从双子星衍生出一系列的程式.[牺牲者](Juggeraut)把自己复制後送到下十个地址之後;而[大雪人](Bigfoot)则把正本和复制品之间的地址定为某一个大质数.想抓到大雪人可是非常困难的.此外,还有全录(Xerox)柏路阿图研究中心的约翰.索殊(John F.Shoch)所写的[蠕虫](Worm),它的目的是要控制侵入的电脑.
 
电脑病毒的出现
 
   在那些日子里,电脑都没有连线,而是互相独立的,因此并不会出现小莫礼士所引起的病毒瘟疫.如果有某部电脑受到[感染],失去控制,工作人员只需把它关掉便可.但是当电脑连线逐渐成为社会结构的一部份之後,一个或自我复制的病毒程式便很可能带来无穷的祸害了.因此长久一来,懂的玩[磁蕊大战]游戏的电脑工作者都严守一项不成文的规定: 不对普罗大众公开这些战争程式的内容.
   一九八三年,这项规定被打破了.科恩.汤普逊(Ken Thompson)是当年一项杰出电脑讲得奖人.在颁奖典礼上,他作了一个演讲,不但公开地证实了电脑病毒的存在,而且还告诉所有听众怎样去写自己的病毒程式.
   他的同行全都吓坏了,然而这个秘密已经流传出去了.一九八四年,情况愈复杂了.这一年,[科学美国人]月刊(Scientific American)的专栏作家杜特尼(A. K. Dewdney)在五月号写了第一篇讨论[磁蕊大战]的文章,并且只要寄上两块美金,任何读者都可以收到它所写得有关写程式的纲领,在自己家中的电脑中开辟战场.
[病毒]一词的正式出现
   在一九八五年三月份的[科学美国人]里,杜特尼再次讨论[磁蕊大战]—–和病毒.在文章的开头他便说:[当去年五月有关[磁蕊大战]的文章印出来时,我并没有想过我所谈论的是那么严重的题目]文中并第一次提到[病毒]这个名称.他提到说,义大利的罗勃吐.些鲁帝(Roberto Cerruti)和马高.么鲁顾帝(Marco Morocutti)发明了一种破坏软体的方法.他们想用病毒,而不是蠕虫,来使得苹果二号电脑受感染.
   些鲁弟写了一封信给杜特尼,信内说:[马高想写一个像[病毒]一样的程式,可以从一部苹果电脑传染到另一部苹果电脑,使其受到感染.可是我们没法这样做,直到我想到,这病毒要先使磁碟受到感染,而电脑只是媒介.这样,病毒就可以从一片磁碟传染到另一片磁碟了.
 
 
 
 
 
 
 
 
 
 

 

 
病毒的特性
传染性

计算机病毒的传染性是指病毒具有把自身复制到其他程序中的特性。计算机病毒是一段人为编制的计算机程序代码,这段程序代码一旦进入计算机并得以执行,它会搜寻其他符合其传染条件的程序或存储介质,确定目标后再将自身代码插入其中,达到自我繁殖的目的。只要一台计算机染毒,如不及时处理,那么病毒会在这台机子上迅速扩散,其中的大量文件(一般是可执行文件)会被感染。而被感染的文件又成了新的传染源,再与其他机器进行数据交换或通过网络接触,病毒会继续进行传染。
正常的计算机程序一般是不会将自身的代码强行连接到其它程序之上的。而病毒却能使自身的代码强行传染到一切符合其传染条件的未受到传染的程序之上。计算机病毒可通过各种可能的渠道,如软盘、计算机网络去传染其它的计算机。当你在一台机器上发现了病毒时,往往曾在这台计算机上用过的软盘已感染上了病毒,而与这台机器相联网的其它计算机也许也被该病毒侵染上了。是否具有传染性是判别一个程序是否为计算机病毒的最重要条件。
 
非授权性
 
一般正常的程序是由用户调用,再由系统分配资源,完成用户交给的任务。其目的对用户是可见的、透明的。而病毒具有正常程序的一切特性,它隐藏再正常程序中,当用户调用正常程序时窃取到系统的控制权,先于正常程序执行,病毒的动作、目的对用户时未知的,是未经用户允许的。
 
隐蔽性
 
病毒一般是具有很高编程技巧、短小精悍的程序。通常附在正常程序中或磁盘较隐蔽的地方,也有个别的以隐含文件形式出现。目的是不让用户发现它的存在。如果不经过代码分析,病毒程序与正常程序是不容易区别开来的。一般在没有防护措施的情况下,计算机病毒程序取得系统控制权后,可以在很短的时间里传染大量程序。而且受到传染后,计算机系统通常仍能正常运行,使用户不会感到任何异常。试想,如果病毒在传染到计算机上之后,机器马上无法正常运行,那么它本身便无法继续进行传染了。正是由于隐蔽性,计算机病毒得以在用户没有察觉的情况下扩散到上百万台计算机中。
大部分的病毒的代码之所以设计得非常短小,也是为了隐藏。病毒一般只有几百或1k字节,而PC机对DOS文件的存取速度可达每秒几百KB以上,所以病毒转瞬之间便可将这短短的几百字节附着到正常程序之中,使人非常不易被察觉。
 
潜伏性
 
大部分的病毒感染系统之后一般不会马上发作,它可长期隐藏在系统中,只有在满足其特定条件时才启动其表现(破坏)模块。只有这样它才可进行广泛地传播。如“PETER-2”在每年2月27日会提三个问题,答错后会将硬盘加密。著名的“黑色星期五”在逢13号的星期五发作。国内的“上海一号”会在每年三、六、九月的13日发作。当然,最令人难忘的便是26日发作的CIH。这些病毒在平时会隐藏得很好,只有在发作日才会露出本来面目。
 
破坏性
 
任何病毒只要侵入系统,都会对系统及应用程序产生程度不同的影响。轻者会降低计算机工作效率,占用系统资源,重者可导致系统崩溃。由此特性可将病毒分为良性病毒与恶性病毒。良性病度可能只显示些画面或出点音乐、无聊的语句,或者根本没有任何破坏动作,但会占用系统资源。这类病毒较多,如:GENP、小球、W-BOOT等。恶性病毒则有明确得目的,或破坏数据、删除文件或加密磁盘、格式化磁盘,有的对数据造成不可挽回的破坏。这也反映出病毒编制者的险恶用心。
 
不可预见性
 
从对病毒的检测方面来看,病毒还有不可预见性。不同种类的病毒,它们的代码千差万别,但有些操作是共有的(如驻内存,改中断)。有些人利用病毒的这种共性,制作了声称可查所有病毒的程序。这种程序的确可查出一些新病毒,但由于目前的软件种类极其丰富,且某些正常程序也使用了类似病毒的操作甚至借鉴了某些病毒的技术。使用这种方法对病毒进行检测势必会造成较多的误报情况。而且病毒的制作技术也在不断的提高,病毒对反病毒软件永远是超前的。
 
 
 
 
 
 
 
 

计算机病毒的传染机制
    1.计算机病毒的传染方式
    所谓传染是指计算机病毒由一个载体传播到另一个载体,由一个系统进入另一个系统的过程。这种载体一般为磁盘或磁带,它是计算机病毒赖以生存和进行传染的媒介。但是,只有载体还不足以使病毒得到传播。促成病毒的传染还有一个先决条件,可分为两种情况,或者叫做两种方式。
    其中一种情况是,用户在进行拷贝磁盘或文件时,把一个病毒由一个载体复制到另一个载体上。或者是通过网络上的信息传递,把一个病毒程序从一方传递到另一方。这种传染方式叫做计算机病毒的被动传染。
    另外一种情况是,计算机病毒是以计算机系统的运行以及病毒程序处于激活状态为先决条件。在病毒处于激活的状态下,只要传染条件满足,病毒程序能主动地把病毒自身传染给另一个载体或另一个系统。这种传染方式叫做计算机病毒的主动传染。
    2.计算机病毒的传染过程
    对于病毒的被动传染而言,其传染过程是随着拷贝磁盘或文件工作的进行而进行的,而对于计算机病毒的主动传染而言,其传染过程是这样的:在系统运行时,病毒通过病毒载体即系统的外存储器进入系统的内存储器,常驻内存,并在系统内存中监视系统的运行。在病毒引导模块将病毒传染模块驻留内存的过程中,通常还要修改系统中断向量入口地址(例如INT 13H或INT 21H),使该中断向量指向病毒程序传染模块。这样,一旦系统执行磁盘读写操作或系统功能调用,病毒传染模块就被激活,传染模块在判断传染条件满足的条件下, 利用系统INT 13H读写磁盘中断把病毒自身传染给被读写的磁盘或被加载的程序,也就是实施病毒的传染,然后再转移到原中断服务程序执行原有的操作。
    计算机病毒的传染方式基本可分为两大类,一是立即传染,即病毒在被执行到的瞬间,抢在宿主程序开始执行前,立即感染磁盘上的其他程序,然后再执行宿主程序;二是驻留内存并伺机传染,内存中的病毒检查当前系统环境,在执行一个程序或D1R等操作时传染磁盘上的程序,驻留在系统内存中的病毒程序在宿主程序运行结束后, 仍可活动,直至关闭计算机。
    3.系统型病毒传染机理
    计算机软硬盘的配置和使用情况是不同的。软盘容量小,可以方便地移动交换使用,在计算机运行过程中可能多次更换软盘;硬盘作为固定设备安装在计算机内部使用,大多数计算机配备一只硬盘。系统型病毒针对软硬盘的不同特点采用了不同的传染方式。
    系统型病毒利用在开机引导时窃获的INT  13控制权,在整个计算机运行过程中随时监视软盘操作情况, 趁读写软盘的时机读出软盘引导区,判断软盘是否染毒,如未感染就按病毒的寄生方式把原引导区写到软盘另一位置,把病毒写入软盘第一个扇区,从而完成对软盘的传染。染毒的软盘在软件交流中又会传染其他计算机。由于在每个读写阶段病毒都要读引导区,既影响微机工作效率,又容易因驱动器频繁寻道而造成物理损伤。
    系统型病毒对硬盘的传染往往是在计算机上第一次使用带毒软盘进行的,具体步骤与软盘传染相似,也是读出引导区判断后写入病毒。
    4.文件型病毒传染机理
    当执行被传染的.COM或.EXE可执行文件时,病毒驻人内存。一旦病毒驻人内存,便开始监视系统的运行。当它发现被传染的目标时,进行如下操作:
    (1)首先对运行的可执行文件特定地址的标识位信息进行判断是否已感染了病毒;
    (2)当条件满足,利用INT  13H将病毒链接到可执行文件的首部或尾部或中间,并存入磁盘中;
    (3)完成传染后,继续监视系统的运行,试图寻找新的攻击目标。
    文件型病毒通过与磁盘文件有关的操作进行传染,主要传染途径有:
    (1)加载执行文件
    文件型病毒驻内存后,通过其所截获的INT 21中断检查每一个加载运行可执行文件进行传染。
    加载传染方式每次传染一个文件,即用户准备运行的那个文件,传染不到那些用户没有使用的文件。
    (2)列目录过程
    一些病毒编制者可能感到加载传染方式每次传染一个文件速度较慢,不够过瘾,于是后来造出通过列目录传染的病毒。
    在用户列硬盘目录的时候,病毒检查每一个文件的扩展名,如果是可执行文件就调用病毒的传染模块进行传染。这样病毒可以一次传染硬盘一个于目录下的全部可执行文件。DIR是最常用的DOS命令,每次传染的文件又多,所以病毒的扩散速度很快,往往在短时间内传遍整个硬盘。
    对于软盘而言,由于读写速度比硬盘慢得多,如果一次传染多个文件所费时间较长,容易被用户发现,所以病毒“忍痛”放弃了一些传染机会,采用列一次目录只传染一个文件的方式。
    (3)创建文件过程
    创建文件是DOS内部的一项操作,功能是在磁盘上建立一个新文件。 已经发现利用创建文件过程把病毒附加到新文件上去的病毒,这种传染方式更为隐蔽狡猾。因为加载传染和列目录传染都是病毒感染磁盘上原有的文件,细心的用户往往会发现文件染毒前后长度的变化,从而暴露病毒的踪迹。而创建文件的传染手段却造成了新文件生来带毒的奇观。好在一般用户很少去创建一个可执行文件,但经常使用各种编译、连接工具的计算机专业工作者应该注意文件型病毒发展的这一动向,特别在商品软件最后生成阶段严防此类病毒。
 
 
 
 
 
 
 
 
 
 
 
计算机病毒的破坏机制
 
    破坏机制在设计原则、工作原理上与传染机制基本相同。它也是通过修改某一中断向量人口地址(一般为时钟中 断INT 8H,或与时钟中断有关的其他中断,如INT 1CH),使该中断向量指向病毒程序的破坏模块。这样, 当系统或 被加载的程序访问该中断向量时,病毒破坏模块被激活,在判断设定条件满足的情况下,对系统或磁盘上的文件进行 破坏活动,这种破坏活动不一定都是删除磁盘文件,有的可能是显示一串元用的提示信息,例如,在用感染了“大麻 病毒”的系统盘进行启动时,屏幕上会出现“Your PC is now Stoned!”。有的病毒在发作时,会干扰系统或用户的 正常工作,例如“小球”病毒在发作时,屏幕上会出现一个上下来回滚动的小球。而有的病毒,一旦发作,则会造成 系统死机或删除磁盘文件。例如,“黑色星期五”病毒在激活状态下,只要判断当天既是13号又是星期五,则病毒程序的破坏模块即把当前感染该病毒的程序从磁盘上删除。
计算机病毒的破坏行为体现了病毒的杀伤力。病毒破坏行为的激烈程度取决于病毒作者的主观愿望和他所具有的 技术能量。数以万计、不断发展扩张的病毒,其破坏行为千奇百怪,不可能穷举其破坏行为,难以做全面的描述。病 毒破坏目标和攻击部位主要是:系统数据区、文件、内存、系统运行、运行速度、磁盘、屏幕显示、键盘、喇叭、打 印机、CMOS、主板等。

 

 
 
 
 
 

 
 

 
计算机病毒的触发
感染、潜伏、可触发、破坏是病毒的基本特性。感染使病毒得以传播,破坏性体现了病 毒的杀伤能力。广范围感染,众多病毒的破坏行为可能给用户以重创。但是,感染和破坏 行为总是使系统或多或少地出现异常。频繁的感染和破坏会使病毒暴露,而不破坏、不感 染又会使病毒失去杀伤力。可触发性是病毒的攻击性和潜伏性之间的调整杠杆,可以控制 病毒感染和破坏的频度,兼顾杀伤力和潜伏性。
??
过于苛刻的触发条件,可能使病毒有好的潜伏性,但不易传播,只具低杀伤力。而过于 宽松的触发条件将导致病毒频繁感染与破坏,容易暴露,导致用户做反病毒处理,也不能 有大的杀伤力。 计算机病毒在传染和发作之前,往往要判断某些特定条件是否满足,满足则传染或发 作,否则不传染或不发作只传染不发作,这个条件就是计算机病毒的触发条件。 实际上病毒采用的触发条件花样繁多,从中可以看出病毒作者对系统的了解程度及 其丰富的想象力和创造力。
??
目前病毒采用的触发条件主要有以下几种:
??
1.日期触发:许多病毒采用日期做触发条件。日期触发大体包括:特定日期触发、月份 触发、前半年后半年触发等。
??
2.时间触发:时间触发包括特定的时间触发、染毒后累计工作时间触发、文件最后写 入时间触发等。
??
3.键盘触发:有些病毒监视用户的击键动作,当现病毒预定的键入时、病毒被激活, 进行某些特定操作。键盘触发包括击键次数触发、组合键触发、热启动触发等。
??
4.感染触发:许多病毒的感染需要某些条件触发,而且相当数量的病毒又以与感染有 关的信息反过来作为破坏行为的触发条件,称为感染触发。它包括:运行感染文件个数触 发、感染序数触发、感染磁盘数触发、感染失败触发等。
??
5.启动触发:病毒对机器的启动次数计数,并将此值作为触发条件称为启动触发。
??
6.访问磁盘次数触发:病毒对磁盘I/O访问的次数进行计数,以预定次数做触发条 件叫访问磁盘次数触发。
??
7.调用中断功能触发:病毒对中断调用次数计数,以预定次数做触发条件。
??
8.CPU型号/主板型号触发:病毒能识别运行环境的CPU型号/主板型号,以预定 CPU型号/主板型号做触发条件,这种病毒的触发方式奇特罕见。 被计算机病毒使用的触发条件是多种多样的,而且往往不只是使用上面所述的某一 个条件,而是使用由多个条件组合起来的触发条件。
??
大多数病毒的组合触发条件是基于 时间的,再辅以读、写盘操作,按键操作以及其他条件。如“侵略者”病毒的激发时间是开 机后机器运行时间和病毒传染个数成某个比例时,恰好按CTRL+ALT+DEL组合键试 图重新启动系统则病毒发作。 病毒中有关触发机制的编码是其敏感部分。剖析病毒时,如果搞清病毒的触发机制, 可以修改此部分代码,使病毒失效,就可以产生没有潜伏性的极为外露的病毒样本,供反 病毒研究使用。
 
 
 
 
 

 
 
 
 

计算机病毒传染的一般过程
 
在系统运行时, 病毒通过病毒载体即系统的外存储器进入系统的内存储器, 常驻内存。该病毒在系统内存中监视系统的运行, 当它发现有攻击的目标存在并满足条件时,便从内存中将自身存入被攻击的目标, 从而将病毒进行传播。 而病毒利用系统INT 13H读写磁盘的中断又将其写入系统的外存储器软盘或硬盘中, 再感染其他系统。
 
可执行文件感染病毒后又怎样感染新的可执行文件?
 
可执行文件.COM或.EXE感染上了病毒, 例如黑色星期五病毒, 它驻入内存的条件是在执行被传染的文件时进入内存的。
一旦进入内存,便开始监视系统的运行。当它发现被传染的目标时, 进行如下操作:
(1)首先对运行的可执行文件特定地址的标识位信息进行判断是否已感染了病毒;
(2)当条件满足, 利用INT 13H将病毒链接到可执行文件的首部或尾部或中间, 并存大磁盘中;
(3)完成传染后, 继续监视系统的运行, 试图寻找新的攻击目标。
 
操作系统型病毒是怎样进行传染的?
 
正常的PC DOS启动过程是:
(1)加电开机后进入系统的检测程序并执行该程序对系统的基本设备进行检测;
(2)检测正常后从系统盘0面0道1扇区即逻辑0扇区读入Boot引导程序到内存的0000: 7C00处;
(3)转入Boot执行之;
(4)Boot判断是否为系统盘, 如果不是系统盘则提示;
non-system disk or disk error
Replace and strike any key when ready
否则, 读入IBM BIO.COM和IBM DOS.COM两个隐含文件;
(5)执行IBM BIO.COM和IBM DOS.COM两个隐含文件, 将COMMAND.COM装入内存;
(6)系统正常运行, DOS启动成功。
 
如果系统盘已感染了病毒, PC DOS的启动将是另一番景象, 其过程为:
 
(1)将Boot区中病毒代码首先读入内存的0000: 7C00处;
(2)病毒将自身全部代码读入内存的某一安全地区、常驻内存, 监视系统的运行;
(3)修改INT 13H中断服务处理程序的入口地址, 使之指向病毒控制模块并执行之。因为任何一种病毒要感染软盘或者硬盘,都离不开对磁盘的读写操作, 修改INT13H中断服务程序的入口地址是一项少不了的操作;
(4)病毒程序全部被读入内存后才读入正常的Boot内容到内存的0000: 7C00处, 进行正常的启动过程;
(5)病毒程序伺机等待随时准备感染新的系统盘或非系统盘。
 
如果发现有可攻击的对象, 病毒要进行下列的工作:
 
(1)将目标盘的引导扇区读入内存, 对该盘进行判别是否传染了病毒;
(2)当满足传染条件时, 则将病毒的全部或者一部分写入Boot区, 把正常的磁盘的引导区程序写入磁盘特写位置;
(3)返回正常的INT 13H中断服务处理程序, 完成了对目标盘的传染

 
 
 
 
 
 
 
 
计算机病毒的生命周期
 
    计算机病毒的产生过程可分为:程序设计-传播-潜伏-触发、运行-实行攻击。计算机病毒拥有一个生命周期,从生成开 始到完全根除结束。下面我们描述病毒生命周期的各个时期。

开发期:在几年前,制造一个病毒需要计算机编程语言的知识。但是今天有一点计算机编程知识的人都可以制造一个病毒。通常计算机病毒是一些误人歧途的、试图传播计算机病毒和破坏计算机的个人或组织制造的。
 
传染期:在一个病毒制造出来后,病毒的编写者将其拷贝并确认其已被传播出去。通常的办法是感染一个流行的程序, 再将其放入BBS站点上、校园和其他大型组织当中分发其复制物。
 
潜伏期:病毒是自然地复制的。一个设计良好的病毒可以在它活化前长时期里被复制。这就给了它充裕的传播时间。这时病毒的危害在于暗中占据存储空间。
 
发作期:带有破坏机制的病毒会在遇至(某一特定条件时发作,一旦遇上某种条件,比如某个日期或出现了用户采取的某特定行为,病毒就被活化了。没有感染程序的病毒属于没有活化,这时病毒的危害在于暗中占据存储空间。
 
发现期:这一段并非总是这样做,但通常如此。当一个病毒被检测到并被隔离出来后,它被送到计算机安全协会或反病毒厂家,在那里病毒被通报和描述给反病毒研究工作者。通常发现病毒是在病毒成为计算机社会的灾难之前完成的。
 
消化期:在这一阶段,反病毒开发人员修改他们的软件以使其可以检测到新发现的病毒。这段时间的长短取决于开发人员的素质和病毒的类型。
 
消亡期:若是所有用户安装了最新版的杀毒软件,那么任何病毒都将被扫除。这样没有什么病毒可以广泛地传播,但有一些病毒在消失之前有一个很长的消亡期。至今,还没有哪种病毒已经完全消失,但是某些病毒已经在很长时间里不再是一个重要的威胁了。
 
 
 
 
 
 
 
 

 
到底什么病毒才是蠕虫
 
  蠕虫(Worm)是通过分布式网络来扩散传播特定的信息或错误,进而造成网络服务遭到拒绝并发生死锁。
  1982年,Shock和Hupp根据The Shockwave Rider一书中的一种概念提出了一种“蠕虫”(Worm)程序的思想。
  这种“蠕虫”程序常驻于一台或多台机器中,并有自动重新定位(autorelocation)的能力。如果它检测到网络中的某台机器未被占用,它就把自身的一个拷贝(一个程序段)发送给那台机器。每个程序段都能把自身的拷贝重新定位于另一台机器中,并且能识别它占用的哪台机器。
  “蠕虫”程序不一定是有害的。论证了“蠕虫”程序可用作为Ethernet网络设备的一种诊断工具,它能快速有效地检测网络。
  “蠕虫”由两部分组成:一个主程序和一个引导程序。 主程序一旦在机器上建立就会去收集与当前机器联网的其它机器的信息。它能通过读取公共配置文件并运行显示当前网上联机状态信息的系统实用程序而做到这一点。随后,它尝试利用前面所描述的那些缺陷去在这些远程机器上建立其引导程序。
  正是这个一般称作引导程序或“钓鱼”程序的小小程序,把“蠕虫”带入了它感染的每一台机器。

 
 

 
 
 

 

病毒最常见的有哪几种类型
  DOS病毒:
 
  指针对DOS操作系统开发的病毒。目前几乎没有新制作的DOS病毒,由于Win9x病 毒的出现,DOS病毒几乎绝迹。但DOS病毒在Win9x环境中仍可以进行感染活动,因此若执行染毒文件,Win9x用户也 会被感染。我们使用的杀毒软件能够查杀的病毒中一半以上都是DOS病毒,可见DOS时代DOS病毒的泛滥程度。但这些 众多的病毒中除了少数几个让用户胆战心惊的病毒之外,大部分病毒都只是制作者出于好奇或对公开代码进行一定变 形而制作的病毒。
 
  Windows病毒:
 
  主要指针对Win9x操作系统的病毒。现在的电脑用户一般都安装Windows系统? Windows病毒一般感染Win9x系统,其中最典型的病毒有CIH病毒。但这并不意味着可以忽略系统是WinNT系列包括 Win2000 的计算机。一些Windows病毒不仅在Win9x上正常感染,还可以感染WinNT上的其它文件。主要感染的文 件扩展名为EXE?SCR?DLL?OCX等。
 
  入侵型病毒:
 
  可用自身代替正常程序中的部分模块或堆栈区。因此这类病毒只攻击某些特定程 序,针对性强。一般情况下难以发现,清除起来较困难。
 
  嵌入式病毒:
 
  这种病毒将自身代码嵌入到被感染文件中,当文件被感染后,查杀和清除病毒都 非常不易。不过编写嵌入式病毒比较困难,所以这种病毒数量不多。
 
  外壳类病毒:
 
  这种病毒将自身代码附着于正常程序的首部或尾部。该类病毒的种类繁多,大多 感染文件的病毒都是这种类型。
 
  病毒生成工具:
 
  通常是以菜单形式驱动,只要是具备一点计算机知识的人,利用病毒生成工具就 可以像点菜一样轻易地制造出计算机病毒,而且可以设计出非常复杂的具有偷盗和多形性特征的病毒。
 
 
 
 
 
 
 
 
 
新时代下的网络病毒
 
   传统的网络病毒定义是指利用网络进行传播的一类病毒的总称。而现在网络时代的网络病毒,已经不是如此单纯的一个概念了,它被溶进了更多的东西。可以这样说,如今的网络病毒是指以网络为平台,对计算机产生安全威胁的所有程序的总和。
由“骗子”升级为“间谍”——木马病毒(Trojan)

传统的木马病毒是指一些有正常程序外表的病毒程序,例如一些密码窃取病毒,它会伪装成系统登录框的模样,当用户在登录框中输入用户名与密码时,这个假的登录框木马便会将用户口令通过网络泄漏出去。
 
现在的木马病毒与传统的木马病毒相比已经有了很大的区别。如果说传统的木马病毒是个骗子的话,那么现在的木马病毒则更象一个间谍。现在的木马病毒一般是指,利用系统漏洞进入用户的计算机系统,通过修改注册表自启动,运行时有意不让用户察觉,将用户计算机中的所有信息都暴露在网络中的病毒程序。如今木马病毒更多地是扮演“里通外国”的角色。大多数黑客程序的服务器端都是木马病毒。
 
不断自我完善——蠕虫病毒(Worm)
 
蠕虫病毒是指利用网络缺陷进行繁殖的病毒程序,象当年的“莫里斯”病毒就是典型的蠕虫病毒。它利用网络的缺陷在网络中大量繁殖,导致几千台服务器无法正常提供服务。

如今的蠕虫病毒除了利用网络缺陷外,更多地利用了一些新的技术,比如说:“求职信”病毒,是利用邮件系统这一大众化的平台,将自己传遍千家万户;“密码”病毒,是利用人们的好奇心理,诱使用户来主动运行病毒;“尼姆达”病毒,则是综合了系统病毒的方法,利用感染文件来加速自己的传播。
 
一枝“新秀”——黑客程序(Hack)
 
黑客程序产生的年代由来以久,但在过去,从没有人将它看做是病毒,理由是,黑客程序只是一个工具,它有界面又不会传染,不能算做病毒。
而随着网络的发展与人们日益增长的安全需求,我们必须重新来看待黑客程序。黑客程序一般都有攻击性,它会利用漏洞在远程控制计算机,甚至直接破坏计算机;黑客程序通常会在用户的计算机中植入一个木马病毒,与木马病毒内外勾结,对计算机安全构成威胁。所以黑客程序也是一种网络病毒。象“冰河”病毒,“BO”病毒,它们功能强大到可以远端控制计算机做任何事情。
 
新型病毒——捆绑器病毒(Binder)
 
捆绑器病毒是一个很新的概念,人们编写这些程序的最初目的是希望通过一次点击可以同时运行多个程序,然而这一工具却成了病毒的新帮凶。比如说,用户可以将一个小游戏与病毒通过捆绑器程序捆绑,当用户运行游戏时,病毒也会同时悄悄地运行,给用户计算机造成危害。
由于捆绑器会将两个程序重新组合,产生一个自己的特殊格式,所以捆绑器程序的出现,使新变种病毒产生的速度大大增加了。为了对付新情况,各大杀毒厂商都将此类型程序定义成一种新病毒——捆绑器病毒,象瑞星2003版杀毒软件还针对此种病毒推出了新的杀毒引擎,可见此病毒已经得到了人们更多的观注。
 
新帮凶——网页病毒
 
网页病毒是利用网页来进行破坏的病毒,它存在于网页之中,其实是利用一些SCRIPT语言编写的一些恶意代码。当用户登录某些含有网页病毒的网站时,网页病毒便被悄悄激活,这些病毒一旦激活,可以利用系统的一些资源进行破坏。轻则修改用户的注册表,使用户的首页、浏览器标题改变,重则可以关闭系统的很多功能,使用户无法正常使用计算机系统,严重者则可以将用户的系统进行格式化。而这种网页病毒容易编写和修改,使用户防不胜防,最好的方法是选用有网页监控功能的杀毒软件以防万一。
 
在新型网络环境下,滋生了许多新概念病毒,针对这种状况,反病毒厂商在研制其产品中也作了很大了改进,如瑞星公司在近期推出的“瑞星杀毒软件2003版”中的“文件级、邮件级、内存级、网页级一体化实时监控系统”,可以全面、有效地监控各种类型的电脑病毒。
 
新时代下的电脑病毒越来越“智能”,此时除了需要反病毒技术不断提高外,还需广大计算机用户提高防范病毒意识。只有厂商和用户的共同努力,才可以有效地遏制病毒的破坏。
 
 
 
 
 
 
 
 
 
 
32位操作系统下的病毒
 
   计算机病毒已经给现代计算机应用带来了很大的威胁。当我们通过网络,磁盘来分享更多信息的同时,计算机病毒的蔓延速度也在不断增大。从传统上讲,DOS环境有大量的病毒,现在已经超过了5000种。然而, 近几年产生了许多以Windows平台为特定目标的计算机病毒将来我们会看到针对象Windows95这种32位操作系统的计算机病毒吗? 不幸的是答案是正确的。当Windows95引入的新技术给用户带来新的动力的时候,它也给计算机病毒更多的机会。例如Windows95没有文件等级保护,这意味着,当网络上的任一台计算机感染了病毒以后,在对等网络中共享的没有被保护的驱动器和文件,将被很快感染。另外,Windows95没有内置防病毒能力, 这样公司和个人用第三方反病毒解决方案来加固系统是十分重要的。
 
   1?在Windows95环境下的病毒?
   Windows95下可以运行DOS程序,Windows16位程序和Windows32位程序。为保持与先前Windows版本的兼容,Windows运行时十分象在DOS下的Windows3.1,首先启动实模式。在实模式中程序和设备驱动程序从CONFIG.SYS和AUTOEXEC.BAT中装载。之后是引导过程,启动Windows95的图形部件。当Windows完成启动后, 用户可以用打开DOS 对话框的方式运行DOS程序。DOS对话框中包括在系统初期启动时所有程序的拷贝,包括可能被装载的病毒代码。不幸的是,这意味着每次DOS对话框启动时将始终有相同的程序,它们是在Windows95图形部份启动前装载的(包括病毒)。并且多次DOS进程可以导致多次感染。?
   在早期版本的Windows中,DOS管理文件系统。而在Windows95中就不同了,Windows95通过使用设备驱动和32位程序来管理传统文件系统。Windows95要求确保文件系统的完整体。为了达到以上目的,禁止DOS程序(和传统病毒)对硬盘进行直接读写,除非它们用特殊的Windows专用代码。但是,在Windows95中允许 DOS程序和病毒对软盘进行直接读写。以上对病毒十分有利,对用户来说是十分不幸的;病毒仍然可以用相同的方式工作,象从硬盘中一样。并且Windows95很少能阻止它。当用户没有注意到用一张有病毒的软盘来引导时,病毒能感染MBR。 病毒将在每次计算机引导时装载,在每一次DOS对话框时安装到系统中。这样当用户对软盘进行操作时,病毒可以将自身繁殖到另外的软盘,从而蔓延到其它的计算机。
   另外,和DOS一样,Windows没有文件等级保护。利用文件进行传播的病毒仍然可以在Windows95下进行繁殖。这与其它的32位操作系统一样,例如OS/2,WindowsNT,它们也允许对文件进行写操作。这样,文件型病毒恰恰象它们在DOS环境下一样进行复制。
?
   2?新技术促进病毒的传播?
   一些使Windows95有吸引力的新技术,实际上帮助病毒在整个网络中繁殖。 例如工作组网络环境十分容易地使病毒快速传播。再有,由于Windows95没有文件等级保护,如果在网络中的计算机被病毒感染, 在对等网络中共享的没有被保护的驱动器和文件将很快被感染。
?
   3?潜在新病毒?
   在反病毒界,有关于新病毒的讨论,这些病毒有可能因Windows95的特性而产生。一个可能的病毒类型是OLE 2 (Object Linking and Embedded)病毒。这种类型的病毒通过将自己假扮成公共服务的一个 OLE2服务器来容易地进行传播。之后,当一个OLE2客户申请一个OLE2服务器来提供公共服务时,实际上病毒取得了控制权。
   它能将自己繁殖到其它文件和计算机,之后运行它替换了的原有OLE2服务器。这个应用程序甚至不知道自己是另一个病毒进行“通话”而不是实际上的OLE2服务器。如果这个OLE2服务器在一个完全不同网络计算机,这个病毒能很快地在网络上传播。?
   另外一种可能的病毒是扩展Shell病毒。Microsoft使这种Shell在Windows95中完全扩展来允许自定义。从技术上讲,病毒能成为其中的一个扩展,因为Windows95对于扩展Shell不需要确认,因此病毒可以写成一种扩展 Shell这样就可以取得控制权并且复制自身。?
   另外一种病毒可能会变得十分流行,它是虚拟设备驱动病毒VxD病毒(Virtual Device Driver)。 Windows95 VxD对整个计算机具有完全控制权。如果通过编制特定程序,它可以直接对硬盘进行写操作。它具有写Windows95 Kernel模块相同的特权,因此它具有广泛的自由来控制系统。在Windows95中增加了动态装载VxD能力, 这就是说一个VxD,不需要每次都在内存中,而是在系统需要时。这意味着病毒可以用一段很小的代码来激活一个动态VXD, 这可以导致严重的系统崩溃。因为Windows95对VxD的行为没有限制,因此VxD病毒可以绕过你所采用的任何保机制。?
   另外一种可能产生病毒的原因是Windows的易操作编程工具的流行。 过去,病毒的编制看需要了解大量的关于汇编和操作系统的知识来创建TSR程序来进行复制。对于Windows来说,许多新手可以用可视化开发工具的高级语言来编写病毒。因为它们更象用户运行的其它程序,因此很难检测出来。



Modified At 2008-05-21 19:12:09

C/C++语言误区之:void main( )

        很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* … */ } is not and never has been C++, nor has it even been C.( void main( ) 从来就不存在于 C++ 或者 C )。下面我分别说一下 C 和 C++ 标准中对 main 函数的定义。

1. C
在 C89 中,main( ) 是可以接受的。Brian W. Kernighan 和 Dennis M. Ritchie 的经典巨著 The C programming Language 2e(《C 程序设计语言第二版》)用的就是 main( )。不过在最新的 C99 标准中,只有以下两种定义方式是正确的:
int main( void )
int main( int argc, char *argv[] )
(参考资料:ISO/IEC 9899:1999 (E) Programming languages — C 5.1.2.2.1 Program startup)
当然,我们也可以做一点小小的改动。例如:char *argv[] 可以写成 char **argv;argv 和 argc 可以改成别的变量名(如 intval 和 charval),不过一定要符合变量的命名规则。
如果不需要从命令行中获取参数,请用int main(void) ;否则请用int main( int argc, char *argv[] ) 。
main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的激活者(如操作系统)。
如果 main 函数的最后没有写 return 语句的话,C99 规定编译器要自动在生成的目标文件中(如 exe 文件)加入return 0; ,表示程序正常退出。不过,我还是建议你最好在main函数的最后加上return 语句,虽然没有这个必要,但这是一个好的习惯。注意,vc6不会在目标文件中加入return 0; ,大概是因为 vc6 是 98 年的产品,所以才不支持这个特性。现在明白我为什么建议你最好加上 return 语句了吧!不过,gcc3.2(Linux 下的 C 编译器)会在生成的目标文件中加入 return 0; 。

Continue reading “C/C++语言误区之:void main( )”

用C语言编写简单的病毒

        [摘要]在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现.
[Abstract] This paper introduce the charateristic of the computer virus,then show a simple example written by TURBOC2.0.
一、什么是病毒
恶意软件可能是第一个对我们产生影响的计算机安全问题.所以病毒在信息安全中是很重要的.
我们要对付病毒,就要了解病毒.
写一些病毒是一个很好的办法.
如果要写一个病毒,先要知道它是什么.可以给病毒一个定义,这一定义是被广泛认可的。Frederic Cohen博士在《计算机病毒简短讲座》中提到的:
“……一种能够通过修改自身来包括或释放自我拷贝而传染给其他程序的程序。“其实病毒和普通程序并无太大不同,而且通常比较简单,不像很多程序那样复杂。只不过病毒里面用到一些正常程序一般不会用到的技术。
要编制一个病毒,首先要知道病毒的运行机理。
不论是何种病毒,它一般在结构上分为三个功能模块:感染机制,触发机制和有效载荷。
在病毒结构中,首要的而且唯一必需的部分是感染机制。病毒首先必须是能够繁殖自身的代码,这是病毒之所以成为病毒的根本
原因。我们可以用一段类C伪码来表示这个过程。

Continue reading “用C语言编写简单的病毒”

RSS详解

(Really Simple Syndication)是一种描述和同步网站内容的格式,是目前使用最广泛的XML应用。

RSS是一种起源于网景的推技术,将订户订阅的内容传送给他们的通讯协同格式(Protocol)。RSS可以是以下三个解释的其中一个:
Really Simple Syndication
RDF (Resource Description Framework) Site Summary
Rich Site Summary
但其实这三个解释都是指同一种Syndication的技术。 RSS目前广泛用于网上新闻频道,blog和wiki,主要的版本有0.91, 1.0, 2.0。

Continue reading “RSS详解”