第四十六章 破譯
海濱城市的夏季向來以溫暖濕潤著稱,而儀器室里由于需要用低溫和干燥來延長儀器和試劑的壽命,所以除了依靠大功率空調(diào)保持20度室溫的同時,還有一臺除濕機(jī)24小時全功率運(yùn)作。
盧赫被凍得直哆嗦的同時,也感覺到鼻子一直在往外冒火。他就這么一個人焦躁地躲著腳,等待著返回宿舍拿硬盤和衣物的艾達(dá)否。
半個小時后,門終于被推開了。他驚喜地轉(zhuǎn)頭,卻發(fā)現(xiàn)來者不是艾達(dá)否,而是王戊。
“盧赫?大半夜的還在這兒做什么呢?”王戊沒有走進(jìn)門,只是探進(jìn)來了個頭,吃驚地問。
盧赫也有些驚訝,一改瑟縮的姿態(tài),挺起胸問:“王老師這么晚怎么也沒下班?”
“哎呀,別提了。我教學(xué)生做實驗,那幫小姑娘笨手笨腳的,一晚上都沒學(xué)會。”王戊皺著眉說,話里滿是無奈和不滿,神情和語氣卻飽含著沾沾自喜。
“那可真是辛苦您了呢?!北R赫裝作不經(jīng)意地走到擺著散亂螺絲頭的置物架前,試圖用身子遮擋住鋅指平臺的屏幕,“我趁晚上人少,約了臺儀器。已經(jīng)用完了,馬上也就回去了?!?p> 王戊把脖子往前探了探,注視著盧赫身后的那一角瑩瑩藍(lán)光,意味深長地說:“鋅指平臺這種東西,還需要等人少的時候用嗎?這破爛儀器平日里一個月都不會有人用一次?!?p> “是,是我多慮了。今天晚上還真沒人跟我搶。行了,我準(zhǔn)備收拾收回去了,您也早點回家休息啊,王老師。”盧赫訕笑著說完,掏出手機(jī)想要給艾達(dá)否發(fā)信息讓他別回來了。
王戊站在原地,似笑非笑地瞇著眼繼續(xù)問道:“盧赫,你不會是,又在養(yǎng)烏龜了吧?”
盧赫怔了一下,收起臉上的笑,認(rèn)真地答道:“王老師真是多慮了呢,您是了解我的,我既不養(yǎng)烏龜,也不養(yǎng)黑膠蟲。我沒那個能耐?!?p> 正說著,身后響起了熟悉的聲音,“喂,讓一讓,借過一下?!?p> 只見艾達(dá)否一把把屏蔽門推到大開,然后從王戊身后冒了出來,徑直走到盧赫身邊,好似王戊不存在一樣。
王戊見狀,悻悻地走了。
艾達(dá)否從口袋里掏出硬盤,插在儀器上,重啟進(jìn)了dos界面。
盧赫在他身后觀望著,好奇地問:“老艾,我看你好像不太待見王戊啊。”
艾達(dá)否一邊敲打出一行行命令,一邊語氣不屑地回答道:“那種人有什么好待見的,學(xué)術(shù)妲己而已?!?p> 盧赫吃到了驚天大瓜,連忙追問:“此話怎講???他一個男的,怎么就妲己了。莫非,他是同志?”
“你個死變態(tài),想哪兒去了?”艾達(dá)否嫌棄地轉(zhuǎn)頭看了一眼盧赫,然后繼續(xù)著手里的活兒,“他是學(xué)院里出了名的交際花,每天孜孜不倦地給同組的女博士和剛升上去的女講師獻(xiàn)殷勤,只為蹭論文作者。”
“哎你別說,有人還真就吃他這一套,讓他順利蹭到了一個頂刊共一和幾個二作,順利留了校。這人學(xué)術(shù)水平不咋地,人品也不咋地,腦子還缺根弦。據(jù)說他畢業(yè)前夕,大年夜地跑到王峰家里去送禮,把人家煩得要死。”
“雖然王峰也不怎么待見他,但架不住人家和學(xué)院女領(lǐng)導(dǎo)關(guān)系好啊,最終還是被留下來了。我可跟你說,趁早躲著他點,就這種能人,分分鐘把你枯燥的科研路給變成甄嬛傳?!?p> 艾達(dá)否說完,把硬盤一拔,往兜里一揣,拍了拍手,“走吧,回宮去吧!”
“就,就這?就完事兒了?”盧赫被不可思議到話都說不利索了,“那你快說說這儀器里到底有什么秘密?”
艾達(dá)否一個手刀削過了盧赫頭頂?shù)拇裘?,“異想天開什么呢?我只是克隆了一個鏡像系統(tǒng),這大幾百萬的東西,可不能在上面胡來??旆霰就趸貙m。”
“喳?!?p> 回宮后,艾達(dá)否坐到自己王位上,翹著右手小拇指,捏著硬盤的USB口,插入到他的主機(jī)上,把鏡像系統(tǒng)導(dǎo)入虛擬機(jī),然后暢游在其中。
503寢室的燈亮了一夜,第二天一早,艾達(dá)否推醒了一旁抱著椅子睡得正香的盧赫。
“小赫子,快醒醒,朕要施展絕技了?!卑_(dá)否指著屏幕上一個屎黃色的文件夾,“看看,這個Immortal,就是核心程序的主文件夾。不得不說,上個世紀(jì)的碼農(nóng)還都挺中二的,這單詞是什么意思?永垂不朽?”
盧赫揉了揉眼睛,打了個大大的哈欠,“這詞是永存和不死的意思吧,寓意很好啊?!?p> 艾達(dá)否撇撇嘴,打開一個叫ExeinfoPE的軟件,把文件夾里一個名為Immortal.exe的文件拖了進(jìn)去,然后按下了回車鍵。
進(jìn)度條飛快地走著,不一會兒,軟件下半部顯示出了兩條信息:
Microsoft Visual C++ V2.0 -100x -(x86)
脫殼成功
“完美!”艾達(dá)否激動到拍桌,“古董軟件就是如此簡單。也許他們的加殼手段在當(dāng)時看來很復(fù)雜,但在20年后的今天,脫殼就像喝水一樣簡單?!?p> “什么是加殼脫殼?。俊北R赫被觸及到了知識盲區(qū)。
“加殼就是為了防止軟件被破譯,在指令的頭部寫入一層額外的指令,把程序入口點和動態(tài)鏈接庫的地址表隱匿起來?!卑_(dá)否說完又思索片刻,“打個不太恰當(dāng)?shù)谋确骄褪牵悴幌氡粍e人看光光,所以要穿衣服,這叫加殼?,F(xiàn)在我非要看光你,就強(qiáng)行把你衣服給扒了,這叫脫殼?!?p> “變態(tài)?!北R赫捂住自己的領(lǐng)口,“那下一步呢?”
“下一步啊,那就是我的拿手絕技了,對這些可執(zhí)行文件和動態(tài)鏈接庫進(jìn)行逆向分析,盡可能全地反推出程序源碼?!卑_(dá)否說著拍了拍自己胸脯,“這破軟件是C屁屁寫的,我拿手,放心好了!”
于是之后的一周里,503寢室的就寢率急劇地從0%提升到了77%,雖然天花板上的那盞老舊的吊燈,每日都不堪重負(fù)地徹夜長明。
那個和艾達(dá)否同名的軟件,一如既往地給力,僅用靜態(tài)分析,便還原出了80%以上的高級語言。艾達(dá)否孜孜不倦地啃食它們,可吃完了以后,卻發(fā)現(xiàn)自己吃了個寂寞。
因為那些能夠被解析的部分,全部都在調(diào)用系統(tǒng)接口,從對象屬性、函數(shù)名和執(zhí)行邏輯來看,它們的功能僅僅在于讀取交互數(shù)據(jù),以及把不知道從哪里蹦出來一長串字符通過自定義的接口,傳遞給另外一個明顯是用來自動化操縱硬件的軟件。
這就像好不容易把別人衣服給扒下來了,卻發(fā)現(xiàn)人家還額外穿了一套內(nèi)衣,一個點都沒露。想要一飽眼福,就要再去做動態(tài)分析和黑盒分析。
動態(tài)分析就是給程序打斷點或者干脆直接單步執(zhí)行,觀察寄存器、內(nèi)存數(shù)據(jù)和堆棧的變化,猜測程序做了什么;黑盒分析就是給程序輸入大量的測試樣例,通過觀察輸入和輸入數(shù)據(jù)的關(guān)系,猜測程序到底做了什么。
這兩種分析方式都是難啃的硬骨頭。
于是在未來的半個月里,每當(dāng)艾達(dá)否靜坐在電腦屏幕前一邊撓頭一邊扣腳時,盧赫都會為他遞上一杯熱騰騰地黑芝麻糊。因為他本就不濃密的頭發(fā),愈加稀疏了。
在喝下37杯黑芝麻糊之后,艾達(dá)否終于崩潰了。他叫來盧赫,鄭重地說:
“現(xiàn)在我宣布一個驚天大秘密:這個鋅指平臺沒有任何技術(shù)含量,它的原理就是你隨機(jī)給它輸入一串堿基序列,然后它再隨機(jī)地給你輸出一串。就這樣,他們花了大幾百萬買了一臺彩票機(jī),就電視上那種,一個鼓風(fēng)機(jī)往透明塑料轉(zhuǎn)盤里吹,隨機(jī)吹出一個又一個的球。”
“現(xiàn)在我給你演示一下?!卑_(dá)否說著,在地址0100345C處打下一個斷點,把內(nèi)存數(shù)據(jù)修改為AGGCCGTTC的二進(jìn)制形式,然后運(yùn)行到下一個斷點,有一串長達(dá)900的數(shù)字被存入內(nèi)存。
“看,就是這樣。它只是給你搖了一串彩票?!卑_(dá)否攤手,“老弟,對不住,是我說大話了。不過也不完全是,因為我通過各種手段分析了,這輸入和輸出真沒什么關(guān)系!南州灣大學(xué)是這個世界上最大的冤大頭,圣加蒙是這個世界上最大的大騙子,沒有之一!”
“介斗似嘛玩兒意兒斗!”艾達(dá)否的心靈似乎受到了創(chuàng)傷,喋喋不休道:“里德那個老梆子,用一個虛擬彩票機(jī),騙了全世界二十多年!”
艾達(dá)否說完后,仰面干掉了杯底的芝麻糊,一把把杯子砸在桌上,然后與盧赫一起呆滯著。
正當(dāng)兩人沉默時,他們身后幽幽地傳來了一句話。
“這不是Fortran嗎?”
兩人同時回頭:“易大仙你什么時候回來的?你走路怎么沒聲?嚇?biāo)纻€人了!”
“佛抻是什么?”艾達(dá)否連忙追問。
易天霖沒有理會二人,而是盯著屏幕繼續(xù)說道:“佛抻是一個比C還早誕生二十多年的高級語言,經(jīng)常用于科學(xué)計算,我們專業(yè)常用。它和C之間最大的區(qū)別在于,數(shù)組的排列方式一個是先行后列,一個是先列后行?!?p> “你看?!币滋炝刂钢鴥?nèi)存區(qū)說,“你輸入的那個數(shù)組,在內(nèi)存里明顯就是先列后行排列的,所以這程序肯定是用佛抻寫的?!?p> 盧赫和艾達(dá)否恍然大悟,一同轉(zhuǎn)身撲向易天霖,易天霖逃也似地跑掉了。
艾達(dá)否欣喜若狂,從桌下掏出一個筆記本,提在手里顛顛地跑出了門,只留盧赫一人獨守空房。
獨處的時間里,盧赫陷入了精神內(nèi)耗。因為他的偶像,看起來好像快要塌房了。也不對,主觀來說,他的偶像早已塌房。
羅伯特·里德,這位開啟了基因編輯傳奇的風(fēng)云人物,曾讓世人誤以為,人類即將擺脫自然的限制,走向無限可能。他曾帶著一身豐功偉業(yè)斷然離世,只留下了一個彩票機(jī)。
盧赫已不對軟件破譯抱有任何希望,因為無論那段用最古老編程語言書寫的程序是什么,它始終都是一個彩票機(jī)。因為艾達(dá)否已多次嘗試,就算多次給它輸入同一串字符,它每次的輸出都是大不相同的。
即便他曾經(jīng)有那么一段抱著機(jī)器嘗試上千次的歷史,但作為一個理智的理科生,他清楚地知道,金哥的誕生,是一個非常偶然的成功,是被幸運(yùn)女神短暫地親吻了一下。
想到這里,他重歸心灰意冷。剛剛?cè)计鹆艘粋€月的寶貴希望,重新破滅掉。他就像是一頭落單的駱駝,回到那熟悉的荒漠茫然地繞著圈,直至駝峰里的脂肪逐漸消耗殆盡,至死都看不到一眼綠洲的影子。
正當(dāng)他全身爆發(fā)出無法抵御的疲倦,一步一步挪到梯子前,準(zhǔn)備爬上床蒙頭大睡時,艾達(dá)否風(fēng)風(fēng)火火地回來了。和他一起出現(xiàn)的還有易天霖。
只見艾達(dá)否揪著易天霖的后衣領(lǐng),拖著他進(jìn)了宿舍,嘴里連連爆發(fā)出怨念:“我說你最近發(fā)什么神經(jīng)?怎么總是躲著我倆?快說,是不是干什么虧心事了?是不是背著我出去偷漢子了?”
“我一堂堂正正的風(fēng)水先生,可不興做那些泯滅人性的事,會遭天譴的。”易天霖拍打著艾達(dá)否的手,“你給我松開,我這都是為了你倆好,我都看見你倆互相壁咚了,我這是給你們制造相處的空間!”
“花好月圓,成人之美!”易天霖掙脫了艾達(dá)否的魔爪,挺胸抬頭,一身正氣地說。
艾達(dá)否和盧赫細(xì)品一下易天霖的話,同時爆發(fā)出一句:“我去你大爺?shù)?!?p> 一番解釋過后,易天霖終于相信了二人之間的清白,意味深長地說了一句:“沒關(guān)系的,萬一以后有什么,我也都支持你們!”
“你個順鳥兒!”艾達(dá)否一邊用家鄉(xiāng)話罵著人,一邊把易天霖按到自己的椅子上,啪地一下拍亮了電腦屏幕。屏幕上是一行行陌生的代碼。
“給你個贖罪的機(jī)會,趕緊幫著看看這段程序是什么意思?!卑_(dá)否把鼠標(biāo)往易天霖面前一拍,“我找我的跨界老同學(xué)還原出的一段佛抻代碼,但他幾年沒用過佛抻,已經(jīng)看不懂了,剩下的就靠你了?!?p> 易天霖接過鼠標(biāo),光標(biāo)在那一行行黑的、藍(lán)的、墨綠色的字符上劃過,直至結(jié)尾。程序不長,只有寥寥的一百多行,他很快看完后,又返回開頭重新劃了一遍。
又一次劃到結(jié)尾時,他皺著眉頭說:“我能看懂,但我不理解。這段程序沒有任何功能,它只是定義了一個偽隨機(jī)數(shù)生成器,把隨機(jī)數(shù)加到一個數(shù)組上,然后輸出。你說只還原出了一段,那其它的呢?”
“其它的加了脫不了的殼。”艾達(dá)否說著一把把易天霖扒拉到了一邊,自己做到電腦前,“不過已經(jīng)不重要了,就這樣已經(jīng)夠了?!?p> 只見艾達(dá)否噼噼啪啪地砸著鍵盤,做著些只有他自己才能看懂的事情。最后,在地址0100345C處打下一個斷點,把內(nèi)存數(shù)據(jù)修改為AGGCCGTTC的二進(jìn)制形式,然后運(yùn)行到下一個斷點,有一串長達(dá)900的數(shù)組被存入內(nèi)存。這一個數(shù)組,與之前那個一模一樣。
艾達(dá)否對著結(jié)果楞了一下,然后轉(zhuǎn)頭看向盧赫:“我沒有食言,我成功破譯了。我取消了隨機(jī)數(shù)生成,然后,輸入和輸出之間,便有了確定的關(guān)系?!?p> “雖然不知道那個老梆子究竟在葫蘆里賣的什么藥,但可以肯定的是,這臺機(jī)器的核心就是那套脫不了殼的程序。鋅指平臺本不是一臺彩票機(jī),是被人生生變成了彩票機(jī)?!?p> 一時間,三人一同陷入沉默,疑惑在心中堆積。
如果說鋅指技術(shù)曾是基因編輯領(lǐng)域里最亮眼的一塊寶石,那么到底是誰,又究竟是為什么,要把它永久埋葬?