重生小说网 > 科幻小说 > 黑客无间道 > 第五章 观战
    个程序的健壮性并不在于它的代码有多长,关键是的代码紧不紧凑,调用合不合理,这个日本学生的程序代码比较短小,不过他的代码却显得很精简,通过调用,攻防兼备。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    身不一样的程序。

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

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

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

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

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

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

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

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

    人家都打到你的地盘来了,你还能无动于衷,坐视不理?看来这个欧洲学生是个反压迫的好战分子。

    其实很多时候,从程序代码的编写可以看出一个人的性格,有的程序员会在编写程序的时候留下一些连他自己都不知道小细节。比如有的人喜欢用跳转指令,他会在程序里设计无数跳转指令,跳呀跳呀的,整得像个迷宫似的;有的程序员还有一些怪癣,他甚至在编写程序的时候喜欢将自己的名字或爱人的名字**到代码中。

    言归正传,罗杰斯教授的程序已经开始轰炸欧洲学生的程序了,人家的程序当然不会坐以待毙,于是它开始动反击了!

    不是有话说得好吗?哪里有压迫,哪里就有反抗嘛。

    罗杰斯教授的程序执行的是dat数据区段大范围轰炸,它可以一次性对多个内存单元进行轰炸,在这样强烈的攻击下,就算欧洲学生的程序虽然可以移动到下一个内存单元,但是在罗杰斯教授的程序大范围的轰炸下,它就显得有点脆弱了。

    不过狗急了尚且跳墙,兔子逼急了还咬人呢。

    在罗杰斯教授的程序开始对数据区段轰炸的时候,欧洲学生的程序在内存单元连续复制,不过他的程序刚复制完移动到下一个内存单元时,很遗憾的就会被罗杰斯教授的程序轰炸掉,但是这个程序的复制度非常快,它总是能在被轰炸之前将自己成功复制,然后跳转到下一个内存单元,由此可以见,这个程序的生命力确实顽强。

    终于,经过多次连续复制后,欧洲学生的程序终于跳出罗杰斯教授的轰炸数据区段,现在,它开始反攻了。

    跳转后,这个程序也执行了轰炸指令,第一次,在a区段的c、5坐标,罗杰斯教授的程序被轰炸了一次;第二次,在b区段的6区段,罗杰斯教授的程序又被轰炸了一次。

    a、b~两个区段,罗杰斯的程序都被轰炸过一次,不过令人遗憾,数据轰炸不彻底,罗杰斯教授的程序从这两个坐标中逃了出来。

    此后,欧洲学生的程序就再也未能在内存单元中轰炸到罗杰斯教授的程序,想必罗杰斯教授的智能程序启动后,程序的陷阱对它不能起到作用了。

    接下来的形势完全呈现一边倒的局面,欧洲学生的程序在内存单元中完全只要躲避的份,根本就没有还手之力。

    罗杰斯教授的程序轰炸的数据区段越来越广,模拟的八千个内存单元,它一次性可以轰炸二十个连续的内存单元!

    不要小看这二十个连续的内存单元,用于“磁芯大战”的程序,在跳转躲避对手轰炸的时候往往不会过这二十个连续的内存单元。

    所以,尽管欧洲学生的程序复制的度也快了很多,但是它的imp程序,目的就是不断把自己移动到下一个内存单元,这些内存单元是连续的,它复制的度再快,也无法逃过罗杰斯的程序对二十个连续单元的轰炸啊。

    看来欧洲学生的程序被吃掉迟早是早晚的事。

    终于,罗杰斯教授的程序在a区段的一个内存单元将欧洲学生的程序锁定了,然后,狂风暴雨的轰炸开始了。

    所有围观看着这个情形都摇了摇头,失望的叹了一口气。