第四章 脆弱的程序?

上一章 目录 下一章
(书书网 www.xiaoshuodaquan.com 提供文字章节) 黑客无间道 第四章 脆弱的程序?[vip]
“磁芯大战吗?”萧云飞喃喃自语。书.书.网眼中闪过一笑意
磁芯大战。一种程序游戏。它应该算是电脑病毒最早的一种形式。早在电脑还是独立存在的个体时。为了缓解编程带来的枯燥。为自己的业余生活增添一丝趣。贝尔实验室的三个年轻就创造了这种名叫“磁芯大战”的程游戏。
名鼎鼎的“莫里斯蠕虫”正是当年磁芯大战中的KingOfTheHill(磁芯大战的最高荣誉。“莫里斯虫”仅仅只99行。采用纯汇编语言编写而成。该虫病毒在一夜间感染了上万台Lnix作系统的SLN工作站和VAX小型机。使这些工作站处于瘫或半瘫状态。M国国家航空和航天局军事基地和主要大学的计算机因为病毒停止运行。不计其数的数据和资料毁一夜之间。“里斯蠕虫”一夜之间就造成一场损失近亿美元的空前劫难。
“莫里斯虫”的创造者罗特莫里斯。正是“磁芯战”游戏创造者之一莫里斯的儿子。显然。罗特莫里斯的到了他父亲的真传。
“磁芯大战”是一种充满力的游戏。很多程序员对这种直观的游戏极为推崇。它不但是可以缓解程序的工作压力。同时它还能加强程序员对底层代码的深刻认识。
在游戏的时候又'习以“芯大战”备受程序员地。
我为什么说“芯大战”很直观呢?
我'知道病毒感染我们地文件大多数都是悄无息的进行。在不知不觉中。病毒可能就经感染了电脑中的Exe文件或者Dll文件。病毒如何复制如何传播。如果感染文件过程。我们地肉眼是无法看到的。
但是“磁芯大”不一样磁芯大战的玩法是游戏双方各写一套程序或者几套程序。输入同一部电脑中。后将两套程保存在电脑地存储系统内。
双方的程序进入存磁芯开:“并发”运行后。玩游戏的人就只能看着屏幕上显示的战况。书.书.网不能做任何更改。所以我们可以通过电脑屏幕看到病毒是如何移动如何复制。如何对其它文件进行感染或者吞噬的。
程序员编写的程序以是短短的几行。也可以是几十行但是程序必须拥有复制移动吞噬的功能。因为程序的移动是体现在进程上地。程序移动性的强弱性对程序的存活起着至关重要的作用。当程序本体被对方的程序控制时。程序可以进行自我复制。逃离对方的控制范围。吞噬的功能就是程序的破坏力。这是“磁芯大战”的实力比拼。
-期的“磁芯大战”通常都是在Mars体系结构地计算机上运行。Mars机器由一个组内存单元。一个CL单元一个简进程管理系和一组指令集构成。程序通过系统指令编写。每一个程序加载到内存的随机位置。当多个程序都加载完后系统给每个程序创建一进程。这些进程在进程队列中的位置是随机的。系统开始运行后。各个程序开始进行对抗。通过进程的观察。可以看到谁存活到最后。
现如今的“磁芯大”工作的环境通常都是在软件模拟系统上运行。不过大多数模拟器都是模拟Mars系统的'原理。
“磁芯大战”可以看作是原始的病毒对抗-个程序都要尽力的消灭其他程序。为了能够生存。程序应该能保护自己。不断移动自身来躲过其他程序地攻击或当自身受到攻击后能自我修复。
正是因为“磁芯大战”的程序具有隐蔽性攻击性和传染性。所以。很多人都说“磁芯战”是病毒的起源。
在国外。专门有磁大战爱好者定期组织比赛。并以此来证明自己的实力和奇思妙想。参赛的胜利者获的KingOfTheHill的荣誉称号。
(PS:“磁芯”其实具有一定的人工。不过呢。利用Java编写的太空战机更接近人工智能)
*****************************
薛亚妮笑了笑对萧云飞解释道:“罗杰斯教授用于磁芯大战的程序可不同于一般的程序。它有着一定程度的智能性。”
“程序智能?”萧云飞有点好奇的问道。书.书.网
“恩。”薛亚妮点了点头。“传统的磁芯大战程序虽然具有自我复制与攻击性。但这是程序员赋予它的特性。在比赛开始后程序就不能进行自我更变了。如果遇到轰炸地址指令更为刁钻的程。它就只能坐以待毙。”
“但是罗杰斯教授用于磁芯大战程序却加入了一段经过加密处理的程序代码。这段代码的功能就是令他的程序具备一的智能。”
“如果它第一次在一个特定的内存单元被对手炸后。只要它能够通过自身的移动逃过猎杀。那么它就会自动将这个缺陷记录在自己的扩展核心中。经过修。第二次遇到对手这样的轰炸指令。它完全可以避免了。所以。它不会在同一个地栽两次跟斗……”


因为程序的攻击性。它吞噬了对方的程序后。它会根的情况保留其他程序的优性。变为自己所有。”
薛亚妮笑了笑。脸闪过一丝自豪的表情:“这是程序人工智能的雏形哦。”
“师姐。要不我们去凑凑热闹?”萧云飞的脸上浮现出一抹淡淡的笑意。
“你?”薛亚妮捂着嘴有点惊讶|着萧云飞师弟你要去战罗杰斯教授地擂台吗'”
“去看看也无妨啊。”萧云飞耸了耸肩笑了笑。“况且我并没有告诉过你。我计算机不行哦……”
萧云飞推开车门东西没有拿。径直朝着科技广场人多地地方走了过去。
薛亚妮看着萧云飞背影。好像觉的萧云飞的身上似乎有一种强烈的自信真不知道他地信从哪里来的?
哼。这个师弟。到要看看他如打败自己设计程序?
薛妮地脸上闪过一狡黠的笑。打开后备箱。提着大包小包的东西跟着萧云飞挤进了人群。
广场中央有一张长方形的桌子。桌子上面放在三计算机。中间一算机的面前坐着一个脑袋略微谢顶。戴着一副近视眼镜的老头子。想必这个老头应该就是薛亚妮说的罗杰斯教授不过此时罗杰斯教授正眯着眼睛在打。
罗杰斯教授的两旁分别有两一年级新生。其中一个亚洲人。一个欧洲人。虽然这两个学生的肤色完全同。但是他们地脸上。透露着专注和自信的神采。
两个学生在计算机键盘上噼里啪啦地敲打着。很显然。他们在编写“磁芯大战”的程序。
亚洲学生重重扣下回车键后。站起身对罗杰斯鞠了一躬。礼貌的对罗杰教授说道:“教授我的对抗程序已经编写好了。要不我们现在就开始?”
一看这个学生的架势。萧云飞就知道这是个日本人无疑了。
罗杰斯睁开眼睛看了看说话的日本学生。摘下眼镜在自己的西服上擦了擦淡淡的说道:“这么快就编好了?你不需要修改修改?”
日本学生摇了摇头:不用了。我对自己的程序有足够地信心。”
罗杰斯看了看正在碌的欧洲学。淡淡的笑了笑:“我们等一下这位同学吧。等他的程序编写好了。我们三个程序一起投进虚拟机的内存中并发运行。这样节时间。你也不会输的太难看……”
听到罗杰斯的话本学生的脸有点难看。但是还是朝着又罗杰斯鞠了一躬。然后坐在计算机前打开己的程序重新修改了起来。
围观的学生中当然不乏这方面的手。他们看了看日本学生重新修改地程序代码。不禁论纷纷。觉的这个程序经过修改后肯定必败无疑。
日本学生修改的程序采用了著名的死循环跳转。即跳转自身。这是对抗当中最简单的生存代码。但是这种跳转到自身的程序。自己并没有攻击能力。唯一取胜的法就是期望手自己死亡。是一株待兔的方法。
但这个程序设计有一致命的缺陷。那就是自己内存中的地址是固定的。它不会跳转。以程序本很容易遭到攻击。
萧云飞仔细看了看日本学生改写的程序。其实他倒不觉的日本学生的程就真的那么脆弱。这种脆弱只是一种表象而已。
虽然萧云飞对日本人的看法不怎么样。但是日本人的变通却是令他觉佩服。从这个日本学生更改的程序就可见一斑。
因为这个死循环跳。主要功能于自保。正是它攻击性。所以在多个程序对抗的时候。它就不会易遭到其他程序的攻击。
举个例子。比如三|家打仗。没有结成同盟的可能。其中两个都是超级大国。另一个则是毫无还手之力的小国。两个超级大国肯定最先做的事情就是把与自己实力相当的对手干掉。然后再回过头来收拾这个毫无还手之力的小国。
历史上发生这样的事情不少。不过通常都是这个像小绵羊一样温顺的小国笑到了最后。
日本学生既然听到罗杰斯要三个程序并发运行。他当然要先隐藏自己的实力。等罗杰斯和一个学生的序斗的两败俱伤的时候。他的程序再厚积薄发。
通过程序代码。确实可以看出这个日本人有点阴险。
为什么这么说呢?
大多数观战的学生认为日本学生修改程序为死循环跳转。目的是想罗杰斯和另一个学生的程序对抗对。双双死亡。他捡便宜而已。
但是萧云飞却看到。这个程序中在模块跳转的时候采用了三次调用:调用了程序中一段经过加密的代码;调用复制指令;调用内存数据AB区轰炸指令!
三个调用指令在程中很隐蔽。况且调用的那段加密代码。那肯定不可能没有用途的!有了这三个调用指令。这个看起来脆弱只会送死的程序。变给人一种神秘的感觉。书.书.网 www.xiaoshuodaquan.com
书书网手机版 m.1pwx.com