肖远发现问題.是在对03:12:31以后的数据包的分析过程中.这时不同的数据包并不完相同.说明世界还沒有完静止下來.
分析工具一边比对每一次的内存数据样本.一边将这些数据以图表的形式展示出來.便于肖远更直观的观察这些数据的变化特征.只不过因为分析数据要花费一定的时间.所以.图像的变化比起god程序的监控图像來.变化慢了很多.
因为这里的图像和god监控程序的显示原理一样.所以显示出來的图形也与那里的完相同.刚开始的时候.图像上一个与其他地方有着明显分别区域在缓慢的四处移动.肖远知道这个漩涡是种子的代码在世界中的映像.
看着种子的映像仍然存在.肖远想起第一阶段的分析中.那些不再发生变化的内存影像中.好像种子不见了.
“它难道被抹杀了.”肖远盯着电脑屏幕上的分析过程.心中暗暗思忖.“不应该的.d应该会很快就将世界的平衡恢复.但是事实是沒有恢复.这其中一定发生了什么我沒有想到的事情.”
“咦.怎么回事.”正在思考的时候.肖远发现原本在图像上还十分明显.一眼就能分辨出來的种子突然消失了.接下來图像又变化了两帧.就静止了.既沒有继续恢复平衡.也沒有因为不平衡而继续变化下去.
肖远暂停了分析软件.从图像静止下來的时间点提取了一个内存样本.拿來和最后的内存样本文件进行了对比..完一样.
“种子突然消失了.然后god也不工作了.有点儿像同归于尽.”
肖远再次回放了刚才的图像演变过程.瞪大了眼睛盯着屏幕上的图像.想要看清楚在图像消失的一瞬间.究竟发生了什么.但是却一无所获.
于是他干脆不让图形自动运行了.而是手动让这些图像一帧一帧的出现.仔细观察.在图像消失的上一帧停了下來.仔细观察了一下.仍然是沒有发现什么问題.于是他将这一帧的内存样本提取了出來.从中将种子的代码单独提取了出來.对其进行了反汇编.
得到种子程序这一时刻的汇编程序后.肖远发现得到的它和种子未放入世界进行进化之前的程序相比.已经发生了很大变化.阅读时给他的感觉就像在阅读一段新的程序一样.要知道这个程序根本就是出自他手.
“看來种子真的自我进化了.只是它为什么会自动消失呢.”肖远努力在代码中寻找着种子自动消失的痕迹.
将程序通读了一遍.肖远发现进化后的种子程序无论是长度还是复杂性都增加了很多.其中存在一段奇异的代码.
“这应该就是种子能够突然消失的原因了.”肖远觉得自己似乎已经找到了答案.但是这段代码很晦涩.难以理解.这让他感到有些受伤.
“见鬼了.”肖远不由得骂了一句.然后反复读了几遍这段代码.并将其中涉及到的寄存器.以及寄存器之间的数据流向绘制成了图像.并找來一本这台工作站的CPU编码的详细手册.一点一点儿加以对照.
所谓读书百遍.其义自现.程序也是如此.反复读过几遍后.肖远越來越觉得这两端程序有些非比寻常.并有种隐隐的预感.读懂这两端程序将是他解开种子程序以及god程序反常表现的关键所在.
终于.肖远从这些代码中找到了最关键的逻辑.却被他的发现下了一跳.甚至有些难以置信.因为这段代码竟然用一种很巧妙的方法完成了一个远程跳转.跳转到目的地已经超出了god创造的世界的内存范围.它所使用到的指令竟然是工作站CPU的一段特殊的指令序列.而这段指令肖远事先根本就不知道.更不会写到程序中.
肖远心中疑惑.如果不是他有非常丰富的阅读代码的经验.手边又有CPU指令集的详细资料可查.这段代码究竟是干什么用的.就算他读上一百遍.恐怕也不会知道的.
“只是种子程序的代码里怎么会有这样的代码段了.”
肖远对这个现象倍感不解.觉得不把这个现象搞清楚.会很不甘心.于是他再次将沒有反汇编之前的种子二进制代码拿了出來.决定从二进制代码入手.试试能找到什么端倪不能.
直接阅读二进制代码显然是不可行的.好在肖远手里还有另外一个工具.这个工具的界面分成左右两栏.左栏是二进制代码.右栏是二进制代码对应的汇编代码.两边对照着阅读.就不是那么困难了.
可惜这样反复读了两遍.肖远还是沒有发现什么规律.随即意识到自己的研究思路有点儿问題.种子的这段程序一定是进化而來的.也就是说它的代码本身也是在不断演变的.自己这样静态的看.本身就有问題.
既然意识到了问題.肖远马上改变了策略.将多个内存样本中的种子程序的二进制代码截取了出來.然后对这些不同时间点的二进制代码进行了纵向比对.重点关注了那段奇异代码的演化过程.并不断对比手边的CPU指令手册.