”
回宮後,艾達否坐到自己王位上,翹著右手小拇指,捏著硬碟的USb口,插入到他的主機上,把映象系統匯入虛擬機器,然後暢遊在其中。
503寢室的燈亮了一夜,第二天一早,艾達否推醒了一旁抱著椅子睡得正香的盧赫。
“小赫子,快醒醒,朕要施展絕技了。”艾達否指著螢幕上一個屎黃色的資料夾,“看看,這個Immortal,就是核心程式的主資料夾。不得不說,上個世紀的碼農還都挺中二的,這單詞是什麼意思?永垂不朽?”
盧赫揉了揉眼睛,打了個大大的哈欠,“這詞是永存和不死的意思吧,寓意很好啊。”
艾達否撇撇嘴,開啟一個叫ExeinfopE的軟體,把資料夾裡一個名為Immortal.exe的檔案拖了進去,然後按下了回車鍵。
進度條飛快地走著,不一會兒,軟體下半部顯示出了兩條資訊:
microsoft Visual c++ V2.0 -100x -(x86)
脫殼成功
“完美!”艾達否激動到拍桌,“古董軟體就是如此簡單。也許他們的加殼手段在當時看來很複雜,但在20年後的今天,脫殼就像喝水一樣簡單。”
“什麼是加殼脫殼啊?”盧赫被觸及到了知識盲區。
“加殼就是為了防止軟體被破譯,在指令的頭部寫入一層額外的指令,把程式入口點和動態連結庫的地址表隱匿起來。”艾達否說完又思索片刻,“打個不太恰當的比方就是,你不想被別人看光光,所以要穿衣服,這叫加殼。現在我非要看光你,就強行把你衣服給扒了,這叫脫殼。”
“變態。”盧赫捂住自己的領口,“那下一步呢?”
“下一步啊,那就是我的拿手絕技了,對這些可執行檔案和動態連結庫進行逆向分析,儘可能全地反推出程式原始碼。”艾達否說著拍了拍自己胸脯,“這破軟體是c屁屁寫的,我拿手,放心好了!”
於是之後的一週裡,503寢室的就寢率急劇地從0%提升到了77%,雖然天花板上的那盞老舊的吊燈,每日都不堪重負地徹夜長明。
那個和艾達否同名的軟體,一如既往地給力,僅用靜態分析,便還原出了80%以上的高階語言。艾達否孜孜不倦地啃食它們,可吃完了以後,卻發現自己吃了個寂寞。
因為那些能夠被解析的部分,全部都在呼叫系統介面,從物件屬性、函式名和執行邏輯來看,它們的功能僅僅在於讀取互動資料,以及把不知道從哪裡蹦出來一長串字元透過自定義的介面,傳遞給另外一個明顯是用來自動化操縱硬體的軟體。
這就像好不容易把別人衣服給扒下來了,卻發現人家還額外穿了一套內衣,一個點都沒露。想要一飽眼福,就要再去做動態分析和黑盒分析。
動態分析就是給程式打斷點或者乾脆直接單步執行,觀察暫存器、記憶體資料和堆疊的變化,猜測程式做了什麼;黑盒分析就是給程式輸入大量的測試樣例,透過觀察輸入和輸入資料的關係,猜測程式到底做了什麼。
這兩種分析方式都是難啃的硬骨頭。
於是在未來的半個月裡,每當艾達否靜坐在電腦螢幕前一邊撓頭一邊扣腳時,盧赫都會為他遞上一杯熱騰騰地黑芝麻糊。因為他本就不濃密的頭髮,愈加稀疏了。
在喝下37杯黑芝麻糊之後,艾達否終於崩潰了。他叫來盧赫,鄭重地說:
“現在我宣佈一個驚天大秘密:這個鋅指平臺沒有任何技術含量,它的原理就是你隨機給它輸入一串鹼基序列,然後它再隨機地給你輸出一串。就這樣,他們花了大幾百萬買了一臺彩票機,就電視上那種,一個鼓風機往透明塑膠轉盤裡吹,隨機吹出一個又一個的球