原因找到後.肖遠將鉆進god程序代碼段隱藏起來的種子抓瞭出來.卻沒有對它的主體進行修改.但是為瞭便於觀察.肖遠在種子進化出的代碼的基礎上.給它增加瞭一個監視模塊.並將這個模塊的規則設置成必須存在.這樣做是為瞭防止種子在繼續進化的時候.將這個模塊給破壞掉.
將種子改造完之後.肖遠將被破壞掉瞭的god程序恢復瞭正常.並將種子發現並利用的那個漏洞給打瞭補丁.但是為瞭驗證他的想法.他在將漏洞堵掉的同時.有刻意的加入瞭另一個漏洞.
搞完這一切之後.肖遠運行瞭god程序.一個初始狀態的世界被創造瞭出來.種子隨後被放瞭進去.d和種子之間的新一輪對抗開始瞭.
d監控程序繪制出來的圖像上能夠看得出來.它在進到世界之後.比起最初的版本進去後對god的圍追堵截疲於應付的情況來.顯得輕松自如的多.以至於世界內隻看到種子在快速的到處移動.所到之處.引起的波瀾卻小瞭很多.而在它離開後.原本激蕩的波瀾也不會持續多久.就快速平息瞭下來.
肖遠沒有去過多關註這個圖像.他將這個監控程序扔到瞭後臺.將剛剛植入種子的監控模塊調瞭出來.這個模塊會將種子程序的每一步操作記錄下來.並將之存儲成一個標準的記錄文件.
為瞭減少種子的代碼長度.肖遠設計的種子的監控程序記錄下來的操作是二進制機器碼.因此他如果想要閱讀這些操作.還需要進行進一步轉換.這個轉換肖遠用到瞭另外一個分析工具.這個分析工具讀取記錄文件.並實時將每一步操作反匯編成匯編程序顯示在他的一個側窗口中.而匯編語言雖然讀起來不如高級語言那麼清晰.但是閱讀匯編語言對於肖遠來說.並不是什麼難事.
仔細觀察著這些匯編代碼.肖遠發現種子在進入世界後.並沒有馬上去入侵那個已經被肖遠堵住的漏洞.而像是在適應著環境.很長一段的匯編操作.都是利用匯編的跳轉命令.在內存空間跳轉.跳轉.再跳轉.不停的變換著自己的方位.
當然在變換方位的時候.它還做瞭其他一些操作.其中最讓肖遠感興趣的是它在轉移後對原來現場的清理.肖遠在編制這個程序的時候.給出的設定規則是.當種子利用跳轉命令從一個內存區域離開的時候.它在原來區域造成的不平衡會棄之不顧.恢復平衡的工作完全交由god程序來完成.這種策略就像一個旅遊者在某一個地方制造瞭一堆垃圾.離開時完全不理會.清理工作將會有景區的清潔工來完成.
但是現在的情況是.這個旅遊者好像變得文明瞭.他離開之前.將垃圾清理.甚至還幫著將他弄亂的環境給恢復瞭原狀.種子跳轉離開後.會將他原來搞得失去平衡的區域重新恢復平衡.
看到這裡.肖遠將這種情況和god監控程序顯示的情況進行瞭對比.發現兩者是一致的.
種子為什麼會進化出這樣的功能出來.肖遠有些想不通.他以人類的思維考慮瞭一番.覺得如果他要是到瞭一個地方.被這個地方的人追殺.為瞭順利逃脫.他一定會竭盡所能將這個地方徹底攪亂.而不是反其道而行之.
這樣的情況持續瞭一段時間.情況開始有瞭變化.種子每過一處都會自己清理現場.必然會耗費一定的計算時間.反過來說.也給god節省瞭大量的計算時間.此消彼長間.種子有六次被god都被god將代碼段給破壞掉瞭.
肖遠在最初設計種子程序的時候.這種情況實際上已經考慮到瞭.針對這種情況.他專門為種子設計瞭一個備份器.這個備份器會將種子最近一個穩定版本存儲下來.而種子的代碼一旦被破壞.這個備份器就會被觸發.然後將他存儲的正常代碼把被破壞掉的代碼覆蓋掉.從而達到修復種子的目的.
六次種子被god破壞.其中五次都是通過上面的方法進行修復的.但是第六次卻發生瞭意外.d在對種子代碼段的破壞剛剛開始之時.種子也正好發出代碼跳轉命令.於是種子的代碼被破壞掉瞭兩個字節後就跳轉到另外的區域去瞭.
因為跳轉命令執行成功.所以備份模塊認為種子沒有遭到破壞.因此備份程序的恢復功能沒有被觸發.反而備份功能被觸發瞭.備份功能是將此時正常的種子代碼拷貝到備份存儲器中一份.
此時種子程序顯然是有問題的.為瞭防止備份程序采樣到這種有問題的程序.當初肖遠在設計的時候.給它設計瞭一個校驗功能.這個校驗功能會對它讀取到的代碼進行校驗.如果發現有問題.就會進一步判定種子代碼出問題瞭.進而啟動恢復功能.使用備份存儲器中的正常代碼覆蓋有問題的代碼.
這是正常的流程.如果不發生其他意外的話.種子同樣會被恢復正常.然而另一個巧合再次發生瞭.這段被破壞掉的代碼實際上仍然是一個二進制字符串.這個字符串和CPU的某一個指令非常巧合的完全一樣.以至於它竟然魚目混珠般的通過瞭校驗.混進瞭種子程序的代碼中.
“難道這就是別的代碼混入種子的方法嗎.”
分析過這段代碼後.肖遠腦子裡產生瞭這樣的想法.同時想到昨晚的試驗.除瞭god和種子之外.還有自動腳本程序也參與瞭這個過程.使得情況變得更加復雜和不可預測.發生某種巧合的可能性估計比這種情況更大.
“很有這種可能.不過種子是怎麼進化到找到god的漏洞的.這個恐怕已經不可查瞭.”
肖遠腦中不停的思考著.對種子程序的演化仍然保持著密切的觀察.又過瞭片刻.種子再一次受到瞭傷害.然後備份程序將剛才混入CPU代碼的問題代碼覆蓋到瞭種子代碼上.要知道.剛才的CPU代碼是硬生生的嵌入到種子代碼中的.因此.這兩個字節的代碼並不能很好的和其他代碼配合工作.這種情況促使種子的進化器發生瞭連鎖反應.對代碼做瞭進一步修改調整.使之合理化.因此種子的功能發生瞭有些改變.
“進化實際上是由一系列的偶然事件形成的必然結果.”肖遠突然有瞭這樣的一個感悟.同時也對這顆種子究竟會進化成什麼樣子產生瞭很強烈的好奇.因為事件隨機.種子的進化必然也是完全隨機的.哪怕一個極其微小的條件變化.都有可能徹底改變它的進化方向.而這種特性正好是混沌系統的具體表現.
思考著這些問題的時候.種子的自我調整並沒有結束.終於在某一次的意外發生過後.進化器再次對種子的代碼進行瞭調整.種子內一直沒有運行過得那段入侵god的代碼被調瞭出來.運行瞭起來.
而原來的漏洞早已被肖遠堵住瞭.這段代碼的運行結果可想而知.入侵沒有成功.反而因為喪失瞭一次跳轉的機會.被god追上.並對它的代碼進行瞭大量的破壞.種子的生命岌岌可危.
PS:純技術性的章節快沒有瞭.這種章節寫起來太費腦子瞭.