在最初设计种子程序的时候。这种情况实际上已经考虑到了。针对这种情况。他专门为种子设计了一个备份器。这个备份器会将种子最近一个稳定版本存储下來。而种子的代码一旦被破坏。这个备份器就会被触发。然后将他存储的正常代码把被破坏掉的代码覆盖掉。从而达到修复种子的目的。
六次种子被god破坏。其中五次都是通过上面的方法进行修复的。但是第六次却发生了意外。这次意外源于时间上的巧合。god在对种子代码段的破坏刚刚开始之时。种子也正好发出代码跳转命令。于是种子的代码被破坏掉了两个字节后就跳转到另外的区域去了。
因为跳转命令执行成功。所以备份模块认为种子沒有遭到破坏。因此备份程序的恢复功能沒有被触发。反而备份功能被触发了。备份功能是将此时正常的种子代码拷贝到备份存储器中一份。
此时种子程序显然是有问題的。为了防止备份程序采样到这种有问題的程序。当初肖远在设计的时候。给它设计了一个校验功能。这个校验功能会对它读取到的代码进行校验。如果发现有问題。就会进一步判定种子代码出问題了。进而启动恢复功能。使用备份存储器中的正常代码覆盖有问題的代码。
这是正常的流程。如果不发生其他意外的话。种子同样会被恢复正常。然而另一个巧合再次发生了。这段被破坏掉的代码实际上仍然是一个二进制字符串。这个字符串和cpu的某一个指令非常巧合的完全一样。以至于它竟然鱼目混珠般的通过了校验。混进了种子程序的代码中。
“难道这就是别的代码混入种子的方法吗。”
分析过这段代码后。肖远脑子里产生了这样的想法。同时想到昨晚的试验。除了god和种子之外。还有自动脚本程序也参与了这个过程。使得情况变得更加复杂和不可预测。发生某种巧合的可能性估计比这种情况更大。
“很有这种可能。不过种子是怎么进化到找到god的漏洞的。这个恐怕已经不可查了。”
肖远脑中不停的思考着。对种子程序的演化仍然保持着密切的观察。又过了片刻。种子再一次受到了伤害。然后备份程序将刚才混入cpu代码的问題代码覆盖到了种子代码上。要知道。刚才的cpu代码是硬生生的嵌入到种子代码中的。因此。这两个字节的代码并不能很好的和其他代码配合工作。这种情况促使种子的进化器发生了连锁反应。对代码做了进一步修改调整。使之合理化。因此种子的功能发生了有些改变。
“进化实际上是由一系列的偶然事件形成的必然结果。”肖远突然有了这样的一个感悟。同时也对这颗种子究竟会进化成什么样子产生了很强烈的好奇。因为事件随机。种子的进化必然也是完全随机的。哪怕一个极其微小的条件变化。都有可能彻底改变它的进化方向。而这种特性正好是混沌系统的具体表现。
思考着这些问題的时候。种子的自我调整并沒有结束。终于在某一次的意外发生过后。进化器再次对种子的代码进行了调整。种子内一直沒有运行过得那段入侵god的代码被调了出來。运行了起來。
而原來的漏洞早已被肖远堵住了。这段代码的运行结果可想而知。入侵沒有成功。反而因为丧失了一次跳转的机会。被god追上。并对它的代码进行了大量的破坏。种子的生命岌岌可危。
ps:纯技术性的章节快沒有了。这种章节写起來太费脑子了。