病毒溯源:磁芯大战 宋一兵 2001年 2期 在各式病毒层出不穷的今天,人们很少去问:病毒到底是怎么出现的?而知道病毒原理的可能就更少,蠕虫病毒可能是大家知道得最早的电脑病毒。但其实电脑病毒在此之前已经经过了一个漫长的“进化”过程。    早在1949年,距离第一部商用电脑的出现还有好几年时,电脑的先驱者约翰·范纽曼──(John Von Neumann)在他的一篇论文《复杂自动装置的理论及组织的进行》里,即已把病毒程序的蓝图勾勒出来。当时,绝大部分的电脑专家都无法想象这种会自我繁殖的程序是可能的,只有少数几个科学家默默地研究范纽曼所提出的概念。直到十年之后,在美国电话电报公司(AT&T)的贝尔(Bell)实验室中,这些概念在一种很奇怪的电子游戏中成形了。这种电子游戏叫做“磁芯大战”(core war),这是由当时贝尔实验室中三个年轻程序人员在业余想出来的,他们是道格拉斯·麦克利(H.Douglas Mcllroy)、维克特·维索斯基(Victor Vysottsky)以及罗伯特·莫里斯(Robert T.Morris),当时他们的年纪都只有二十多岁。磁芯大战的玩法是游戏双方各写一套程序,输入同一部电脑中,这两套程序在电脑的记忆系统内互相追杀,有时它们会设下一些关卡,有时会停下来自行修理(重新写)被对方破坏的几行指令;当它被困时,也可以把自己复制一次,逃离险境。因为它们都在电脑的记忆磁芯中游走,因此得到了磁芯大战之名。    这个游戏的特点,在于双方的程序进入电脑之后,玩游戏的人只能看着屏幕上显示的战况,而不能做任何更改,一直到某一方的程序被另一方的程序完全“吃掉”为止。    用于磁芯大战的游戏有多种,例如有个叫爬行者的程序(Creeper),每一次执行都会自动生成一个副本,很快电脑中原有资料就会被这些爬行者侵蚀掉;“侏儒”(Dwarf)程序在记忆系统中行进,每到第五个“地址”(address)便把那里所储存的东西变为零,这会使原本的程序严重破坏;最奇特的就是一个叫“印普”(Imp)的战争程序了,它只有一行指令,那就是“MOV 01”,其中MOV是“Move”的简写,即移动的意思。它把身处的地址中所载的“0”写(移)到下一个地址中,当“印普”展开行动之后,电脑中原有的每一行指令都被改为“MOV 01”,换句话说,荧光屏上留下一大堆“MOV 01”。    在那些日子里,电脑都没有连线,是互相独立的,因此病毒瘟疫很难传播。如果有某部电脑受到“感染”,失去控制,工作人员只需把它关掉便可。但是当电脑连线逐渐成为社会结构的一部分之后,一个或自我复制的病毒程序便很可能带来无穷的祸害了。例如爬行者程序就能够从一台机器“爬”到另一台机器中。因此长久以来,懂得玩“磁芯大战”游戏的电脑工作者都严守一项不成文的规定:不对大众公开这些程序的内容。    1983年,这项规定被打破了。科恩·汤普逊(Ken Thompson)是当年一项杰出电脑奖得奖人,在颁奖典礼上,他作了一个演讲,不但公开证实了电脑病毒的存在,而且还告诉所有听众怎样去写自己的病毒程序。他的同行全都吓坏了,然而这个秘密已经流传出去了。1984年,情况愈复杂了,这一年,《科学美国人》月刊(Scientific American)的专栏作家杜特尼(A.K.Dewdney)在5月刊号写了第一篇讨论“磁芯大战”的文章,并且只要寄上两块美金,任何读者都可以收到有关写程序的纲领,在自己家的电脑中开辟战场。    在1985年3月份的《科学美国人》里,杜特尼再次讨论“磁芯大战”和病毒。在文章的开头他便说:“当去年5月有关‘磁芯大战’的文章印出来时,我并没有想过我所谈论的是那么严重的题目……”文中第一次提到“病毒”这个名称。他提到说,意大利的电脑程序员利用感染磁碟的方式使其它电脑受到破坏性程序的感染。    就这样,潘多拉之盒被打开了,许多程序员都了解了病毒的原理,进而开始尝试编制这种具有隐蔽性、攻击性和传染性的特殊程序。病毒从隐秘走向公开,先是利用磁碟,然后是利用网络,迅速在全世界范围内扩散开来,成为电脑用户的头号敌人。