麻花小说网 > 其他小说 > 黑客无间道 > 黑客无间道第57部分阅读

黑客无间道第57部分阅读

    他就会成为罗杰斯教授的弟子,这份殊荣,可不是一般人能够得到的,而且过关的人不但可以得到奖品,而且还可以从这个擂台赛上拿走十个学分哦……”

    薛雅妮顿了顿接着说道:“罗杰斯教授的擂台近十年来每年开学的时候举办一次,而且规定只能是麻省理工大学的新生才能参加,不过据我所知,十年来,仅仅只有三个人挑战成功过……”

    在天才汇聚的it,十年来竟然仅仅只有三个人通过罗杰斯的考验?!这不禁令萧云飞的心中充满了强烈的战意。

    “不知道罗杰斯教授的擂台是什么内容?”

    薛雅妮笑了笑:“游戏。”

    “游戏?!”

    “没错!”薛雅妮点了点头,“游戏的名字叫做ai磁芯大战……”

    第四章 脆弱的程序?

    磁芯大战吗?“萧云飞喃喃自语,眼中闪过一丝笑意

    磁芯大战,一种程序游戏,它应该算是电脑病毒最早的一种形式。

    早在电脑还是独立存在的个体时,为了缓解编程带来的枯燥,为自己的业余生活增添一丝乐趣,贝尔实验室的三个年轻人就创造了这种名叫“磁芯大战”的程序游戏。

    大名鼎鼎的“莫里斯蠕虫”正是当年磁芯大战中的offthehi111(磁芯大战的最高荣誉),“莫里斯蠕虫”仅仅只有99行,采用纯汇编语言编写而成,该蠕虫病毒在一夜之间感染了上万台unix操作系统的sunn工作站和vax小型机,使这些工作站处于瘫痪或半瘫痪状态,国国家航空和航天局、军事基地和主要大学的计算机因为病毒停止运行,不计其数的数据和资料毁于一夜之间,“莫里斯蠕虫”一夜之间就造成一场损失近亿美元的空前大劫难。

    “莫里斯蠕虫”的创造罗特里斯,正是“磁芯大战”游戏创造之一莫里斯的儿子,显然,罗特里斯得到了他父亲的真传。

    “磁芯大战”是一种充满魅力的游戏,很多程序员对这种直观的游戏极为推崇,它不但是可以缓解程序员的工作压力,同时它还能加强程序员对底层代码的深刻认识。

    在游戏的时候又能学习,所以“磁芯大战”备受程序员的推崇。

    我为什么说“磁芯大战”很直观呢?

    我们知道,病毒感染我们的文件大多数都是悄无声息的进行,在不知不觉中,病毒可能就已经感染了电脑中的exe文件或d11文件,病毒如何复制,如何传播,如果感染文件的过程,我们地肉眼是无法看到的。

    但是“磁芯大战”不一样,磁芯大战的玩法是游戏双方各写一套程序或几套程序,输入同一部电脑中,然后将两套程序保存在电脑的存储系统内。

    双方地程序进入存储磁芯开始“并”运行后。玩游戏地人就只能看着屏幕上显示地战况。而不能做任何更改。所以我们可以通过电脑屏幕看到病毒是如何移动。如何复制。如何对其它文件进行感染或吞噬地。

    程序员编写地程序可以是短短地几行。也可以是几十行。但是程序必须拥有复制、移动、吞噬地功能。因为程序地移动是体现在进程上地。程序移动性地强弱性对程序地存活起着至关重要地作用。当程序本体被对方地程序控制时。程序可以进行自我复制。逃离对方地控制范围。吞噬地功能就是程序地破坏力。这是“磁芯大战‘地实力比拼。

    早期地“磁芯大战”通常都是在ars体系结构地计算机上运行。a机器由一个组内存单元。一个cuu单元。一个简单进程管理系统和一组指令集构成。程序通过系统指令编写。每一个程序加载到内存地随机位置。当多个程序都加载完后系统给每个程序创建一个进程。这些进程在进程队列中地位置是随机地。系统开始运行后。各个程序开始进行对抗。通过进程地观察。可以看到谁存活到最后。

    现今地“磁芯大战”工作地环境通常都是在软件模拟系统上运行。不过大多数模拟器都是模拟ars系统地工作原理。

    “磁芯大战”可以看作是原始地病毒对抗。每个程序都要尽力地消灭其他程序。为了能够生存。程序应该能保护自己。不断移动自身来躲过其他程序地攻击或当自身受到攻击后能自我修复。

    正是因为“磁芯大战”地程序具有隐蔽性、攻击性和传染性。所以。很多人都说“磁芯大战”是病毒地起源。

    在国外,专门有磁芯大战爱好定期组织比赛,并以此来证明自己的实力和奇思妙想,参赛地胜利获得offthehi11的荣誉称号。

    (pss:“磁芯大战”其实具有一定的人工智能,不过呢,利用jaa~编写的太空战机更接近人工智能)

    薛亚妮笑了笑对萧云飞解释道:“罗杰斯教授用于磁芯大战的程序可不同于一般的程序,它有着一定程度的智能性。”

    “程序智能?”萧云飞有点好奇的问道。

    “恩,”薛亚妮点了点头,“传统的磁芯大战程序虽然具有自我复制与攻击性,但这是程序员赋予它的特性,在比赛开始后程序就不能进行自我更变了,如果遇到轰炸地址指令更为刁钻的程序,它就只能坐以待毙。”

    “但是罗杰斯教授用于磁芯大战的程序却加入了一段经过加密处理的程序代码,这段代码的功能就是令他的程序具备一定的智能。”

    “如果它第一次在某一个特定的内存单元被对手轰炸后,只要它能够通过自身的移动逃过猎杀,那么它就会自动将这个缺陷记录在自己的扩展核心中,经过修复,第二次遇到对手这样的轰炸指令,它完全可以避免了,所以,它不会在同一个地方栽两次跟斗……”

    “还

    为程序的攻击性,它吞噬了对方的程序后,它将会根情况保留其他程序的优越性,变为自己所有。“

    薛亚妮笑了笑,脸上闪过一丝自豪的表情:“这是程序人工智能的雏形哦。”

    “师姐,要不我们也去凑凑热闹?”萧云飞的脸上浮现出一抹淡淡的笑意。

    “你?”薛亚妮捂着嘴有点惊讶看着萧云飞,“师弟,你要去挑战罗杰斯教授的擂台吗?”

    “去看看也无妨啊,”萧云飞耸了耸肩笑了笑,“况且我并没有告诉过你,我计算机不行哦……”

    萧云飞推开车门,东西也没有拿,径直朝着科技广场人多的地方走了过去。

    薛亚妮看着萧云飞的背影,好像觉得萧云飞的身上似乎有一种强烈的自信,真不知道他地自信从哪里来的?

    哼,这个师弟,我到要看看他如何打败自己设计的程序?

    薛亚妮的脸上闪过一丝狡黠地笑意,打开后备箱,提着大包小包的东西跟着萧云飞挤进了人群。

    广场中央有一张长方形的桌子,桌子上面放在三台计算机,中间一台计算机的面前坐着一个脑袋略微谢顶,戴着一副近视眼镜的老头子,想必这个老头应该就是薛亚妮说的罗杰斯教授,不过此时罗杰斯教授正眯着眼睛在打盹呢。

    罗杰斯教授的两旁分别有两个一年级新生,其中一个亚洲人,一个欧洲人,虽然这两个学生的肤色完全不同,但是他们的脸上,透露着专注和自信地神采。

    两个学生在计算机键盘上噼里啪啦地敲打着,很显然,他们在编写“磁芯大战”的程序。

    亚洲学生重重扣下回车键后,站起身对罗杰斯鞠了一躬,礼貌的对罗杰斯教授说道:“教授,我的对抗程序已经编写好了,要不我们现在就开始?”

    一看这个学生的架势,萧云飞就知道这是个日本人无了。

    罗杰斯睁开眼睛看了看说话的日本学生,摘下眼镜在自己地西服上擦了擦淡淡的说道:“这么快就编写好了?你不需要修改修改?”

    日本学生摇了摇头:“不用了,我对自己的程序有足够的信心。”

    罗杰斯看了看正在忙碌的欧洲学生,淡淡的笑了笑:“我们等一下这位同学吧,等他地程序编写好了,我们三个程序一起投进虚拟机的内存中并运行,这样节省时间,你也不会输得太难看……”

    听到罗杰斯的话,日本学生的脸色有点难看,但是还是朝着又罗杰斯鞠了一躬,然后坐在计算机前打开自己的程序重新修改了起来。

    围观地学生中当然不乏这方面的高手,他们看了看日本学生重新修改地程序代码,不禁议论纷纷,觉得这个程序经过修改后肯定必败无疑。

    日本学生修改的程序采用了著名地死循环跳转,即跳转自身,这是对抗当中最简单的生存代码,但是这种跳转到自身地程序,自己并没有攻击能力,唯一取胜的方法就是期望对手自己死亡,是一种守株待兔的方法。

    但这个程序设计有一个致命的缺陷,那就是自己在内存中的地址是固定的,它不会跳转,所以程序本体很容易遭到攻击。

    萧云飞仔细看了看日本学生改写的程序,其实他倒不觉得日本学生的程序就真的那么脆弱,这种脆弱只是一种表象而已。

    虽然萧云飞对日本人的看法不怎么样,但是日本人的变通却是令他觉得佩服,从这个日本学生更改的程序就可见一斑。

    因为这个死循环跳转,主要功能在于自保,正是它没有攻击性,所以在多个程序对抗的时候,它就不会容易遭到其他程序的攻击。

    举个例子,比如三个国家打仗,没有结成同盟的可能,其中两个都是级大国,另一个则是毫无还手之力的小国,两个级大国肯定最先做的事情就是把与自己实力相当的对手干掉,然后再回过头来收拾这个毫无还手之力的小国。

    历史上生这样的事情不少,不过通常都是这个像小绵羊一样温顺的小国笑到了最后。

    日本学生既然听到罗杰斯要三个程序并运行,他当然要先隐藏自己的实力,等罗杰斯和另一个学生的程序斗得两败俱伤的时候,他的程序再厚积薄。

    通过程序代码,确实可以看出这个日本人有点阴险。

    为什么这么说呢?

    大多数观战的学生都认为日本学生修改程序为死循环跳转,目的是想罗杰斯和另一个学生的程序对抗对,双双死亡,他捡便宜而已。

    但是萧云飞却看到,这个程序中在模块跳转的时候采用了三次调用:调用了程序中一段经过加密的代码;调用复制指令;调用内存数据a、b区轰炸指令!

    三个调用指令在程序中很隐蔽,况且调用的那段加密代码,那肯定不可能没有用途的!

    有了这三个调用指令,这个看起来脆弱得只会送死的程序,变得给人一种神秘莫测的感觉。

    第五章 观战

    个程序的健壮性并不在于它的代码有多长,关键是的代码紧不紧凑,调用合不合理,这个日本学生的程序代码比较短小,不过他的代码却显得很精简,通过调用,攻防兼备。

    相对于日本学生编写的程序代码,欧洲学生编写的程序代码就显得要冗长得多,不过欧洲学生的代码攻击性看起来却更加强大。

    欧洲学生的程序是一款比较出名的ip程序,这个程序的目的就是不断把自己移动到下一个内存单元,然后运行到下一个内存单元执行,通过对内存的加一指令,使得自身在内存中的位置不断移动,它的生存能力比跳转自身的死循环要强,通过程序在内存中的位置移动,即可躲避对手的攻击。

    欧洲学生的程序代码还采用“哨兵”概,即先在代码前面放一个数据,然后

    检查该数据是否被改变,如果数据被改变表示其他程序运行到了该处,或攻击了该地址,自己就可以采取相应的对策,通过移动,躲避攻击或动对该地址的攻击。

    生存之道,在他的程序里体现得淋漓尽致啊!当然,程序的对抗不仅仅在于生存之道,攻击才是重中之重!

    “磁芯大战”的对抗在于自己的程序能够覆盖对手的程序,不过覆盖对手的程序后也并代表你一定能取胜,因为它不一定能导致对手的程序执行中止进程操作,所以,程序中要用轰炸指令,即当你的dat覆盖了对方的程序时,你调用的程序就要对内存单元地数据区域进行轰炸。

    欧洲学生的代码通过跳转,每隔两个内存单元就对其它程序就行循环轰炸,最后再对整个内存以dat形式进行全面轰炸!

    这样的轰炸程序是非常有效的攻击,现在的很多程序都是靠这种手法攻击其它程序,攻击得手后,然后它利用ip的方法移动自己避免被攻击。

    这个欧洲学生的程序功能大概就是这样地情况,在萧云飞看来,这个程序只能算作差强人意。

    两个人地程序一对比。日本学生地程序让萧云飞更为期待。

    欧洲学生在程序最后一行写上endd然后编译成功。侧过头来看着罗杰斯笑了笑:“教授。我准备好了……”

    “终于好了?”罗杰斯教授伸了个懒腰。“我们都等你好久了。”

    欧洲学生不好意思地挠了挠头:“当然。和教授你对战。我自然要谨慎一点。”

    听到这句话。罗杰斯和周围地学生善意地笑了笑。

    罗杰斯教授侧过头看了看盯着计算机屏幕一脸专注地日本学生问道:“你呢?你准备好了吗?”。

    日本学生听到罗杰斯问话,站起身又要朝他鞠躬,罗杰斯连忙摆了摆手:“你坐下,不用站起来……”

    日本学生显得有点尴尬,刚刚离开椅子的又坐上了椅子:“教授,我准备好了,随时可以进行对抗。”

    “好,”罗杰斯拍了拍手,“那我们就准备开始吧。”

    两个学生编写地程序通过局域网传输到了罗杰斯教授的计算机上,ars系统地虚拟机早已经准备就绪,罗杰斯教授将三个程序保存在虚拟系统的存储磁芯。

    三个程序加载完成后,系统给每个程序在进程队列中创建了一个位置随机地进程,然后,罗杰斯教授开启了程序“并”运行。

    很快的,三个程序开始在进程列表中混战开来。

    通过虚拟机中的追踪功能,三个程序运行情况很直观地显示在了计算机屏幕上。

    当然,日本学生的程序是处于死循环跳转,它在内存中地地址是固定的,所以它在进程队列中很直观,因为它是静止不动地。

    不过正是由于这个原因,他的程序并没有遭到罗杰斯教授和欧洲学生的程序的攻击,所以,在进程队列中,主要是罗杰斯教授和欧洲学生的程序在激烈厮杀。

    既然罗杰斯教授敢摆下“磁芯大战”的擂台,他当然是有所依仗的,他的程序的攻击性已经达到了变态的地步。

    罗杰斯教授的程序随机加载内存地址,系统创建的进程位置也是随机的,不过用了不到两分钟时间,这个程序就已经遍历了整个内存地址,好像在巡视自己的领地一般,跳转极为疯狂。

    遍历内存地址的目的相当于扫描过程,如果在内存单元中,这个程序一旦现了其它程序体,它就会主动进攻其它程序。

    通过虚拟机的追踪功能,非常直观地看到了这个程序的所有动作,先罗杰斯教授的程序在遍历内存地址的时候,它在内存单元中就现了两

    身不一样的程序。

    因为日本学生的程序没有什么危险,欧洲学生设计的“哨兵”代码触了罗杰斯教授的攻击指令,所以,它率先对欧洲学生的程序起了攻击。

    为什么罗杰斯教授的程序会先会攻击欧洲学生的程序呢?

    原因就出在欧洲学生程序代码的“哨兵”身上。

    哨兵,顾名思义,就是起到站岗、放哨、警戒的作用,罗杰斯教授的程序在遍历内存单元时,当它移动到欧洲学生程序所在的内存地址时,该区段的数据必然会产生变化,“哨兵”代码向程序本体送警报,提示有敌来袭。

    当然,“哨兵”代码只是起到提示、警报作用,它本身并没有攻击作用,这就像打仗的时候,敌军空袭,自己基地里拉响的防空警报。

    当然,通过防空警报知道敌人的空军来轰炸基地了,然后可以根据基地自身的防御情况,可以决定是逃跑还是反击。

    “哨兵”向程序本体提醒自己所在的内存地址数据生了变化,根据程序员的设计,它会选择是移动内存单元躲避还是通过数据块轰炸。

    很显然,欧洲学生的程序执行的动作是反击!

    人家