按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
围观地学生中当然不乏这方面的高手,他们看了看日本学生重新修改地程序代码,不禁议论纷纷,觉得这个程序经过修改后肯定必败无疑。
日本学生修改的程序采用了著名地死循环跳转,即跳转自身,这是对抗当中最简单的生存代码,但是这种跳转到自身地程序,自己并没有攻击能力,唯一取胜的方法就是期望对手自己死亡,是一种守株待兔的方法。
但这个程序设计有一个致命的缺陷,那就是自己在内存中的地址是固定的,它不会跳转,所以程序本体很容易遭到攻击。
萧云飞仔细看了看日本学生改写的程序,其实他倒不觉得日本学生的程序就真的那么脆弱,这种脆弱只是一种表象而已。
虽然萧云飞对日本人的看法不怎么样,但是日本人的变通却是令他觉得佩服,从这个日本学生更改的程序就可见一斑。
因为这个死循环跳转,主要功能在于自保,正是它没有攻击性,所以在多个程序对抗的时候,它就不会容易遭到其他程序的攻击。
举个例子,比如三个国家打仗,没有结成同盟的可能,其中两个都是级大国,另一个则是毫无还手之力的小国,两个级大国肯定最先做的事情就是把与自己实力相当的对手干掉,然后再回过头来收拾这个毫无还手之力的小国。
历史上生这样的事情不少,不过通常都是这个像小绵羊一样温顺的小国笑到了最后。
日本学生既然听到罗杰斯要三个程序并运行,他当然要先隐藏自己的实力,等罗杰斯和另一个学生的程序斗得两败俱伤的时候,他的程序再厚积薄。
通过程序代码,确实可以看出这个日本人有点阴险。
为什么这么说呢?
大多数观战的学生都认为日本学生修改程序为死循环跳转,目的是想罗杰斯和另一个学生的程序对抗对,双双死亡,他捡便宜而已。
但是萧云飞却看到,这个程序中在模块跳转的时候采用了三次调用:调用了程序中一段经过加密的代码;调用复制指令;调用内存数据a、B区轰炸指令!
三个调用指令在程序中很隐蔽,况且调用的那段加密代码,那肯定不可能没有用途的!
有了这三个调用指令,这个看起来脆弱得只会送死的程序,变得给人一种神秘莫测的感觉。
黑客无间道 正文 第五章 观战
个程序的健壮性并不在于它的代码有多长,关键是的代码紧不紧凑,调用合不合理,这个日本学生的程序代码比较短小,不过他的代码却显得很精简,通过调用,攻防兼备。
相对于日本学生编写的程序代码,欧洲学生编写的程序代码就显得要冗长得多,不过欧洲学生的代码攻击性看起来却更加强大。
欧洲学生的程序是一款比较出名的Imp程序,这个程序的目的就是不断把自己移动到下一个内存单元,然后运行到下一个内存单元执行,通过对内存的加一指令,使得自身在内存中的位置不断移动,它的生存能力比跳转自身的死循环要强,通过程序在内存中的位置移动,即可躲避对手的攻击。
欧洲学生的程序代码还采用”哨兵“概**,即先在代码前面放一个数据,然后
检查该数据是否被改变,如果数据被改变表示其他程序运行到了该处,或攻击了该地址,自己就可以采取相应的对策,通过移动,躲避攻击或动对该地址的攻击。
生存之道,在他的程序里体现得淋漓尽致啊!当然,程序的对抗不仅仅在于生存之道,攻击才是重中之重!
”磁芯大战“的对抗在于自己的程序能够覆盖对手的程序,不过覆盖对手的程序后也并代表你一定能取胜,因为它不一定能导致对手的程序执行中止进程操作,所以,程序中要用轰炸指令,即当你的daT覆盖了对方的程序时,你调用的程序就要对内存单元地数据区域进行轰炸。
欧洲学生的代码通过跳转,每隔两个内存单元就对其它程序就行循环轰炸,最后再对整个内存以dat形式进行全面轰炸!
这样的轰炸程序是非常有效的攻击,现在的很多程序都是靠这种手法攻击其它程序,攻击得手后,然后它利用Imp的方法移动自己避免被攻击。
这个欧洲学生的程序功能大概就是这样地情况,在萧云飞看来,这个程序只能算作差强人意。
两个人地程序一对比。日本学生地程序让萧云飞更为期待。
欧洲学生在程序最后一行写上endd。然后编译成功。侧过头来看着罗杰斯笑了笑:”教授。我准备好了……“
”终于好了?“罗杰斯教授伸了个懒腰。”我们都等你好久了。“
欧洲学生不好意思地挠了挠头:”当然。和教授你对战。我自然要谨慎一点。“
听到这句话。罗杰斯和周围地学生善意地笑了笑。
罗杰斯教授侧过头看了看盯着计算机屏幕一脸专注地日本学生问道:”你呢?你准备好了吗?“。
日本学生听到罗杰斯问话,站起身又要朝他鞠躬,罗杰斯连忙摆了摆手:”你坐下,不用站起来……“
日本学生显得有点尴尬,刚刚离开椅子的**又坐上了椅子:”教授,我准备好了,随时可以进行对抗。“
”好,“罗杰斯拍了拍手,”那我们就准备开始吧。“
两个学生编写地程序通过局域网传输到了罗杰斯教授的计算机上,mars系统地虚拟机早已经准备就绪,罗杰斯教授将三个程序保存在虚拟系统的存储磁芯。
三个程序加载完成后,系统给每个程序在进程队列中创建了一个位置随机地进程,然后,罗杰斯教授开启了程序”并“运行。
很快的,三个程序开始在进程列表中混战开来。
通过虚拟机中的追踪功能,三个程序运行情况很直观地显示在了计算机屏幕上。
当然,日本学生的程序是处于死循环跳转,它在内存中地地址是固定的,所以它在进程队列中很直观,因为它是静止不动地。
不过正是由于这个原因,他的程序并没有遭到罗杰斯教授和欧洲学生的程序的攻击,所以,在进程队列中,主要是罗杰斯教授和欧洲学生的程序在激烈厮杀。
既然罗杰斯教授敢摆下”磁芯大战“的擂台,他当然是有所依仗的,他的程序的攻击性已经达到了变态的地步。
罗杰斯教授的程序随机加载内存地址,系统创建的进程位置也是随机的,不过用了不到两分钟时间,这个程序就已经遍历了整个内存地址,好像在巡视自己的领地一般,跳转极为疯狂。
遍历内存地址的目的相当于扫描过程,如果在内存单元中,这个程序一旦现了其它程序体,它就会主动进攻其它程序。
通过虚拟机的追踪功能,非常直观地看到了这个程序的所有动作,先罗杰斯教授的程序在遍历内存地址的时候,它在内存单元中就现了两
身不一样的程序。
因为日本学生的程序没有什么危险,欧洲学生设计的”哨兵“代码触了罗杰斯教授的攻击指令,所以,它率先对欧洲学生的程序起了攻击。
为什么罗杰斯教授的程序会先会攻击欧洲学生的程序呢?
原因就出在欧洲学生程序代码的”哨兵“身上。
哨兵,顾名思义,就是起到站岗、放哨、警戒的作用,罗杰斯教授的程序在遍历内存单元时,当它移动到欧洲学生程序所在的内存地址时,该区段的数据必然会产生变化,”哨兵“代码向程序本体送警报,提示有敌来袭。
当然,”哨兵“代码只是起到提示、警报作用,它本身并没有攻击作用,这就像打仗的时候,敌军空袭,自己基地里拉响的防空警报。
当然,通过防空警报知道敌人的空军来轰炸基地了,然后可以根据基地自身的防御情况,可以决定是逃跑还是反击。
”哨兵“向程序本体提醒自己所在的内存地址数据生了变化,根据程序员的设计,它会选择是移动内存单元躲避还是通过数据块轰炸。
很显然,欧洲学生的程序执行的动作是反击!
人家都打到你的地盘来了,你还能无动于衷,坐视不理?看来这个欧洲学生是个反压迫的好战分子。
其实很多时候,从程序代码的编写可以看出一个人的性格,有的程序员会在编写程序的时候留下一些连他自己都不知道小细节。比如有的人喜欢用跳转指令,他会在程序里设计无数跳转指令,跳呀跳呀的,整得像个迷宫似的;有的程序员还有一些怪癣,他甚至在编写程序的时候喜欢将自己的名字或爱人的名字**到代码中。
言归正传,罗杰斯教授的程序已经开始轰炸欧洲学生的程序了,人家的程序当然不会坐以待毙,于是它开始动反击了!
不是有话说得好吗?哪里有压迫,哪里就有反抗嘛。
罗杰斯教授的程序执行的是daT数据区段大范围轰炸,它可以一次性对多个内存单元进行轰炸,在这样强烈的攻击下,就算欧洲学生的程序虽然可以移动到下一个内存单元,但是在罗杰斯教授的程序大范围的轰炸下,它就显得有点脆弱了。
不过狗急了尚且跳墙,兔子逼急了还咬人呢。
在罗杰斯教授的程序开始对数据区段轰炸的时候,欧洲学生的程序在内存单元连续复制,不过他的程序刚复制完移动到下一个内存单元时,很遗憾的就会被罗杰斯教授的程序轰炸掉,但是这个程序的复制度非常快,它总是能在被轰炸之前将自己成功复制,然后跳转到下一个内存单元,由此可以见,这个程序的生命力确实顽强。
终于,经过多次连续复制后,欧洲学生的程序终于跳出罗杰斯教授的轰炸数据区段,现在,它开始反攻了。
跳转后,这个程序也执行了轰炸指令,第一次,在a区段的c、5坐标,罗杰斯教授的程序被轰炸了一次;第二次,在B区段的6区段,罗杰斯教授的程序又被轰炸了一次。
、B~两个区段,罗杰斯的程序都被轰炸过一次,不过令人遗憾,数据轰炸不彻底,罗杰斯教授的程序从这两个坐标中逃了出来。
此后,欧洲学生的程序就再也未能在内存单元中轰炸到罗杰斯教授的程序,想必罗杰斯教授的智能程序启动后,程序的陷阱对它不能起到作用了。
接下来的形势完全呈现一边倒的局面,欧洲学生的程序在内存单元中完全只要躲避的份,根本就没有还手之力。
罗杰斯教授的程序轰炸的数据区段越来越广,模拟的八千个内存单元,它一次性可以轰炸二十个连续的内存单元!
不要小看这二十个连续的内存单元,用于”磁芯大战“的程序,在跳转躲避对手轰炸的时候往往不会过这二十个连续的内存单元。
所以,尽管欧洲学生的程序复制的度也快了很多,但是它的Imp程序,目的就是不断把自己移动到下一个内存单元,这些内存单元是连续的,它复制的度再快,也无法逃过罗杰斯的程序对二十个连续单元的轰炸啊。
看来欧洲学生的程序被吃掉迟早是早晚的事。
终于,罗杰斯教授的程序在a区段的一个内存单元将欧洲学生的程序锁定了,然后,狂风暴雨的轰炸开始了。
所有围观看着这个情形都摇了摇头,失望的叹了一口气。
黑客无间道 正文 第六章 我来试试
有围观看着这个情形都摇了摇头,失望的叹了一
面对罗杰斯教授的程序暴风骤雨的轰炸,欧洲学生的程序此时还在负隅顽抗,它还在跳。
,如果是人遇到这样的蹂躏恐怕早就拱手认输了,到了这种情况还不自觉认输岂