原因找到后,肖远将钻进god程序代码段隐藏起来的种子抓了出来,却没有对它的主体进行修改,但是为了便于观察,肖远在种子进化出的代码的基础上,给它增加了一个监视模块,并将这个模块的规则设置成必须存在,这样做是为了防止种子在继续进化的时候,将这个模块给破坏掉。
将种子改造完之后,肖远将被破坏掉了的god程序恢复了正常,并将种子发现并利用的那个漏洞给打了补丁,但是为了验证他的想法,他在将漏洞堵掉的同时,有刻意的加入了另一个漏洞。
搞完这一切之后,肖远运行了god程序,一个初始状态的世界被创造了出来,种子随后被放了进去,静态平衡瞬间被打破了,god和种子之间的新一轮对抗开始了。
因为这次放进去的是进化后的种子,god监控程序绘制出来的图像上能够看得出来,它在进到世界之后,比起最初的版本进去后对god的围追堵截疲于应付的情况来,显得轻松自如的多,以至于世界内只看到种子在快速的到处移动,所到之处,引起的波澜却小了很多,而在它离开后,原本激荡的波澜也不会持续多久,就快速平息了下来。
肖远没有去过多关注这个图像,他将这个监控程序扔到了后台,将刚刚植入种子的监控模块调了出来,这个模块会将种子程序的每一步操作记录下来,并将之存储成一个标准的记录文件。
为了减少种子的代码长度,肖远设计的种子的监控程序记录下来的操作是二进制机器码,因此他如果想要阅读这些操作,还需要进行进一步转换,这个转换肖远用到了另外一个分析工具,这个分析工具读取记录文件,并实时将每一步操作反汇编成汇编程序显示在他的一个侧窗口中,而汇编语言虽然读起来不如高级语言那么清晰,但是阅读汇编语言对于肖远来说,并不是什么难事。
仔细观察着这些汇编代码,肖远发现种子在进入世界后,并没有马上去入侵那个已经被肖远堵住的漏洞,而像是在适应着环境,很长一段的汇编操作,都是利用汇编的跳转命令,在内存空间跳转,跳转,再跳转,不停的变换着自己的方位。
当然在变换方位的时候,它还做了其他一些操作,其中最让肖远感兴趣的是它在转移后对原来现场的清理,肖远在编制这个程序的时候,给出的设定规则是,当种子利用跳转命令从一个内存区域离开的时候,它在原来区域造成的不平衡会弃之不顾,恢复平衡的工作完全交由god程序来完成,这种策略就像一个旅游者在某一个地方制造了一堆垃圾,离开时完全不理会,清理工作将会有景区的清洁工来完成。
但是现在的情况是,这个旅游者好像变得文明了,他离开之前,将垃圾清理,甚至还帮着将他弄乱的环境给恢复了原状,种子跳转离开后,会将他原来搞得失去平衡的区域重新恢复平衡。
看到这里,肖远将这种情况和god监控程序显示的情况进行了对比,发现两者是一致的。
种子为什么会进化出这样的功能出来,肖远有些想不通,他以人类的思维考虑了一番,觉得如果他要是到了一个地方,被这个地方的人追杀,为了顺利逃脱,他一定会竭尽所能将这个地方彻底搅乱,而不是反其道而行之。
这样的情况持续了一段时间,情况开始有了变化,种子每过一处都会自己清理现场,必然会耗费一定的计算时间,反过来说,也给god节省了大量的计算时间,此消彼长间,种子有六次被god都被god将代码段给破坏掉了。
肖远在最初设计种子程序的时候,这种情况实际上已经考虑到了,针对这种情况,他专门为种子设计了一个备份器,这个备份器会将种子最近一个稳定版本存储下来,而种子的代码一旦被破坏,这个备份器就会被触发,然后将他存储的正常代码把被破坏掉的代码覆盖掉,从而达到修复种子的目的。
六次种子被god破坏,其中五次都是通过上面的方法进行修复的,但是第六次却发生了意外,这次意外源于时间上的巧合,god在对种子代码段的破坏刚刚开始之时,种子也正好发出代码跳转命令,于是种子的代码被破坏掉了两个字节后就跳转到另外的区域去了。
因为跳转命令执行成功,所以备份模块认为种子没有遭到破坏,因此备份程序的恢复功能没有被触发,反而备份功能被触发了,备份功能是将此时正常的种子代码拷贝到备份存储器中一份。
此时种子程序显然是有问题的,为了防止备份程序采样到这种有问题的程序,当初肖远在设计的时候,给它设计了一个校验功能,这个校验功能会对它读取到的代码进行校验,如果发现有问题,就会进一步判定种子代码出问题了,进而启动恢复功能,使用备份存储器中的正常代码覆盖有问题的代码。
这是正常的流程,如果不发生其他意外的话,种子同样会被恢复正常,然而另一个巧合再次发生了,这段被破坏掉的代码实际上仍然是一个二进制字符串,这个字符串和CPU的某一个指令非常巧合的完全一样,以至于它竟然鱼目混珠般的通过了校验,混进了种子程序的代码中。
“难道这就是别的代码混入种子的方法吗?”
分析过这段代码后,肖远脑子里产生了这样的想法,同时想到昨晚的试验,除了god和种子之外,还有自动脚本程序也参与了这个过程,使得情况变得更加复杂和不可预测,发生某种巧合的可能性估计比这种情况更大。
“很有这种可能,不过种子是怎么进化到找到god的漏洞的,这个恐怕已经不可查了。”
肖远脑中不停的思考着,对种子程序的演化仍然保持着密切的观察,又过了片刻,种子再一次受到了伤害,然后备份程序将刚才混入CPU代码的问题代码覆盖到了种子代码上,要知道,刚才的CPU代码是硬生生的嵌入到种子代码中的,因此,这两个字节的代码并不能很好的和其他代码配合工作,这种情况促使种子的进化器发生了连锁反应,对代码做了进一步修改调整,使之合理化,因此种子的功能发生了有些改变。
“进化实际上是由一系列的偶然事件形成的必然结果。”肖远突然有了这样的一个感悟,同时也对这颗种子究竟会进化成什么样子产生了很强烈的好奇,因为事件随机,种子的进化必然也是完全随机的,哪怕一个极其微小的条件变化,都有可能彻底改变它的进化方向,而这种特性正好是混沌系统的具体表现。
思考着这些问题的时候,种子的自我调整并没有结束,终于在某一次的意外发生过后,进化器再次对种子的代码进行了调整,种子内一直没有运行过得那段入侵god的代码被调了出来,运行了起来。
而原来的漏洞早已被肖远堵住了,这段代码的运行结果可想而知,入侵没有成功,反而因为丧失了一次跳转的机会,被god追上,并对它的代码进行了大量的破坏,种子的生命岌岌可危。
PS:纯技术性的章节快没有了,这种章节写起来太费脑子了。
请收藏本站阅读最新小说 m.feisxs.com
飞速中文唯一官网:feibzw.com 备用域名:feisxs.com