“小毅,你怎麼可以輕易就放棄這局呢!”鄭潔有些“恨鐵不成鋼”,她一個勁的在幫他爭取,卻沒想到他自己倒大方地放棄了。
蘇蘭上前拉住鄭潔的手,安慰道:“別生氣了,接着看下去吧,小毅不會輸的。”
第二題還是解密題,不過不再是那種加了密碼型殼的加密,而是直接給出一個加密文件,機密者將該文件還原出來。
在dodo的cd中,但是那些文檔非常的晦澀,而且這些文檔並沒有提供足夠的信息,所以有時候連開發者們往往都無法很好地弄懂這一格式。
windows下的加密和解密說白了就是針對pe文件格式結構的相關操作,所以掌握這種格式是每一個破解者的必備技能。
第二場比試開始,這次的題目很顯然大大難於上一個,兩人有條不紊地開始進行破解。
這個難度比較大,所以允許他們從網絡上下載一些常用的破解軟件,當然,如果他們自己有工具的話,也允許用自己的工具。
許毅從網絡上的一臺肉雞中下載了幾個小軟件,有用來檢測殼的,也有用來調試跟蹤的,其中大部分功能和網絡上流傳的那些工具差不多,不過經過了他的一些相應修改,功能更爲強大。例如如果其中有反跟蹤代碼,可能那些工具有影響,但他的工具可以無視等。
許毅用一個檢測殼的小軟件將那個要破解的文件加載進去,想看看,是否能夠看出到底是加了什麼類型的殼。
“殼”是一種很形象的說法,意思就是對軟件進行保護的那一層代碼。說起來,殼和病毒在某些方面比較類似,即殼和病毒都需要比原程序代碼更早地獲得控制權,這一功能可以通過在原程序的代碼執行前加入自己的一段代碼來實現。在文件執行的時候,殼修改了原程序的執行文件的組織結構,從而達到殼的代碼能夠比原程序的代碼提前獲得控制權的目的,並且還不會影響原程序的正常運行,從這點上來說,殼和病毒是很類似的。
許毅編寫的這個軟件是根據一些殼的特徵代碼來識別到底是什麼殼的,當然,識別的準確度也有可能不準確,因爲這些特徵代碼也是可以僞造的。
許毅查看了一下,軟件中顯示,“殼”是vc++的,於是許毅用另外一個脫殼工具試了一下,發現脫出來的文件是損壞的文件,也就是說,這個殼並沒有這麼簡單。他再經過一番努力,發現這個殼根本就是僞造的,工具脫殼並行不通,看來只有手動脫殼了。
詹姆斯的進展就比許毅慢多了,他發現,這種加密方式自己很陌生,以前根本沒有接觸過,腦門的汗漸漸冒了出來。看來,上帝並不是每次都這麼照顧他。詹姆斯現在正被那個具有欺騙性質的殼弄得頭昏腦漲,他現在還在相信這個殼是vc++的,所以正朝這方面努力着。
米歇爾教授一直在後面觀察着他們兩個的情況,看到詹姆斯有些手忙腳亂地樣子,他微微地搖頭,他和許毅相比,差得實在是太遠了。光從心態上來看,他就已經輸了。破解的時候,最忌諱的就是心浮氣躁,破解是一個非常需要耐性的活,冷靜的頭腦是必不可少的,越心急進展就會越慢。反觀許毅,他一步一個腳印,心平氣和,井井有條。
不過米歇爾教授心中並不擔心,因爲這個題目的難度遠遠超乎大家的意料,在幾周之前,他自己也肯定不能夠在短時間內將其搞定,這可是他最近才研究出來的新的加密方式。米歇爾教授是想讓他們都破解不出來,這樣他們就又成了平局。
許毅原本對這次比試也沒怎麼在乎,可是現在,他改變了自己的想法,他對這個文件的加密方式感興趣起來。這正是許毅的性格,越難越能挑起他的鬥志。
pe格式文件是按節區進行規劃組織的,不同的節區一般保存的數據的作用也不相同。殼出於保護原程序代碼和數據的目的,一般都會加密原程序文件的各個節區。當然,既然是加密保存,但程序在執行的時候又不能也保持加密狀態,所以解密也是殼必做的工作之一。節區不只一個,如果殼是按節區加密的,那麼在解密時也按節區解密,並且要把解密的節區數據按照節區的定義放在合適的內存位置。
入口點 節區 基地址 重定位 鉤子函數
如果加殼時用到了壓縮技術,那麼在解密之前還有一道工序,當然是解壓縮。
這也是一些殼的特色之一,比如說原來的程序文件未加殼時1-2m大小,加殼後反而只有幾百k,這種瘦身技術當然會吸引了不少眼球。
時間一點一滴地過去,衆人靜靜地在那等着也有些無聊了,他們開始慢慢議論起來。單從表面上來看,許毅比詹姆斯要鎮定多了,至少他額頭還沒有冒汗。並且,許毅的手一直有事做,不像詹姆斯,他每隔一段時間就會發上一陣呆,簡直有些手足無措了。
比賽在這邊進行,而一些情況也早就傳到了網絡上。mit論壇現在正針對已經進行了的那場作廢了的比賽進行激烈地討論着。許毅用winrar就簡單破解了一個密碼型殼的加密文件,這太讓人驚訝了,從來沒有人想到過,這個軟件竟然還可以這麼用!大家紛紛拿出網絡上很多加密軟件的加密結果進行試驗,結果發現,這個軟件竟然可以破解掉網絡上流行的幾乎三分之一的加密軟件!
“這些加密軟件也太垃圾了!”衆人紛紛罵道。大家沒想到,原來值得信賴的加密軟件原來是如此的不堪一擊。大家紛紛意識到,以後加密文件的時候,一定不能隨便選擇加密軟件,一定要選擇信得過的,質量有保證的,要不然自己的秘密就隨便可以被別人瀏覽了。
時間已經過去兩個多小時,米歇爾覺得已經差不多了,可以宣佈停止比賽了,因爲他相信,就算再延長几個小時,結果也還是會這樣。
“看來這次的題目我出得太難了,以至於他們兩個都沒能做出來,看來,只能宣佈”
“終於搞定了!”這時,許毅突然感嘆一聲,打斷了米歇爾教授的話,“教授,這個加密方法還真是不錯呢!”
“什什麼?你破解出來了?!”米歇爾徹底震驚了。
“沒想到,這個文件不但是分節區進行加密,竟然還對其中的數據進行了壓縮處理,更爲巧妙的是,在加殼的同時,還讓加殼後的程序調用了殼中的幾個子程序教授,這個加密方法可是第一次出現呢!”許毅剛纔就是把大量的時間花在了最後一個“子程序”技術上,許毅進行脫殼處理之後,雖然將殼脫掉了,但是程序執行也還是不正常,因爲在脫殼的同時也將這些子程序給脫掉了。
另外,這個加密技術中的壓縮處理技術也是一個亮點,原本有快2m的程序文件在加殼之後,竟然只剩下幾百k了。
米歇爾剛開始還有些不相信許毅真的破解出來了,但是聽到許毅的話之後,他不得不信了。他跑到許毅的計算機前查看了一下,結果真的出來了。他能說什麼呢?只能承認自己的確是老了,這個問題竟然困擾了他幾個月的時間,自己將這個技術發明出來之後,竟然被許毅在幾個小時之內就給解決掉了。
米歇爾教授嘆了口氣,轉頭問詹姆斯:“詹姆斯,你做到哪了?”
詹姆斯猶豫了一下,說道:“解解壓縮。”
“耶~太棒了,贏了,贏了!”鄭潔歡呼起來,跑上場來強制性地給許毅來了一個熊抱。弄得許毅尷尬不已,連忙將其推開一段距離,還真受不了她的熱情。
肯看不過去,站了出來怪聲道:“先別高興得太早,詹姆斯還有機會扭轉戰局,別忘了,他現在才勝一場而已。”