第九十九章 以靜制動(上)
俞雪重新在家裡出現了影蹤,因為李秀鳳終於是回滬市去了,這幾天她可被李秀鳳折騰壞了,李秀鳳以項目的名義每天都要舉行這個那個的會,再加上西京市各界宴請李秀鳳的酒會,害得俞雪每日疲於應付。如果僅僅是如此,那也就罷了,最要命的是,每次的聚會上,李秀鳳都要當著很多人的面宣佈俞雪是她女兒,俞雪先是很難接受,但不好當眾發作,勉勉強強應下來,隨後每天被李秀鳳這麼折騰,也就麻木了,隨便你怎麼說吧,只要你不讓我回滬市就可以。李秀鳳這招也真夠厲害的,不經意間就磨掉了俞雪的性子,讓俞雪不再像以前那樣那麼時刻堤防著自己。
起初,俞雪還擔心雪風他們幾個會埋怨自己隱瞞真相,結果雪風每日忙著在電腦前鼓搗,歐陽菲更是提也不提這事,而陳硯則是在那次的發佈會之後就再沒有露面,俞雪看大家並不在意此事,懸著的心也就放了下來。
雪風給陳硯打了幾個電話,結果那邊還是沒接,雪風又發幾個惡俗短信過去騷擾她,這丫頭竟然也沒像往常那樣立刻電話打過來開罵,雪風暗道這丫頭轉了性,竟然如此沉得住氣,不過他只當是這丫頭心裡還在介意上次的事情,故意不理自己,也就沒有在意,他相信過不了幾天,這丫頭肯定會把上次的事情忘得乾乾淨淨。
自破解量子密碼之後,雪風這幾個月就再也沒有玩過破解,此時缺少了小沙彌,雪風更是回到了當年徒手破解軟件的時代,此刻他就被一個軟件給難住了,也許說是吸引住了更確切一點。這個軟件是甲骨文公司的軟件,但是它的加密服務卻不是甲骨文公司的,而是來自一家很小的安全公司,他的加密算法非常有特色,和雪風以往所接觸的算法都不一樣。
雪風也是跟蹤了很久之後,才弄清楚了這個加密算法的流程。軟件的解密過程類似與我們經常玩的「填字遊戲」,運行軟件後,軟件首先調用用戶註冊時的註冊碼,註冊碼是16位的,然後程序會把這16個字符「填入」解密程序的16個接口之內,如果註冊碼正確,則解密程序就正常運行,被加密的軟件就會還原,然後正常運行。
這個解密程序之所以能難住雪風,是因為雪風無法把這16個字符準確填入解密程序中。
整個解密程序就如同一扇巨大的表盤,這個表盤每時每刻都維持著高速旋轉,在這個表盤上面分佈著16個毫無規則的鑰匙孔,那就是程序的接口,鑰匙孔隨著表盤做著運動。註冊碼的16個字符就好像是16把鑰匙,只有把這16把鑰匙準確插入鑰匙孔內,解密程序才會開始還原軟件。如果鑰匙不是原配的,或者少插一把鑰匙,又或插錯了彼此位置,解密程序就不會還原軟件,用戶就沒有權限來使用這個軟件。
難就難在了這個解密程序的運行效率太高了,整個解密過程只需要不到200毫秒,在這麼短的時間內,要找出那些鑰匙孔都已經是很困難了,更別提插鑰匙了,就算是你發現了鑰匙孔,等你下手再去插的時候,鑰匙孔就已經不知道轉到哪裡去了。何況這些鑰匙孔的位置差異也太大了,有的*近表盤裡面的地方,有的*近表盤的邊緣,但是你又不能插錯順序,只能從第一個字符填到最後一個。跳著填,就算最後所有字符填入的位置都是正確的,程序也會判斷你輸入了錯誤的註冊碼。
雪風做了一個小程序,嵌入到那軟件的開頭,用來完成這個填字遊戲,可是完成最好的一次,也只是成功插入了前面的三個字符,後面的就跟不上了。因為雪風的這個程序多了一個判斷過程的,它得先判斷是不是出現了鑰匙孔,如果出現了,還得判斷是不是該插入鑰匙,插入哪把鑰匙,等判斷完,那原本存在的鑰匙孔已經轉過去,或許就在你判斷上一個鑰匙孔的這段時間裡,下一個鑰匙孔也轉了過去。
此路看來是行不通了,計算機也有它的一個負載極限,雪風只好再去想別的的辦法。既然把這16個字符準確填入解密程序的接口是如此地困難,那麼原本的解密程序又是怎麼完成這一過程的呢?雪風不由好奇起來,自己的寫的那個小程序已經把計算機的運行速度發揮到了極限,尚且無法準確插入,那麼解密程序的設計者,又是如何保證自己的程序就能把16個字符準確填入各自的位置,而且順序還不會錯亂呢?
雪風對自己機器的CPU進行了降低頻率的處理,現在CPU運行的速度只有原來的四分之一,與之相應,那個解密程序運行的速度也就慢了好多,原來需要200毫秒就能完成的解密過程,現在就至少需要一秒才能完成,這就給雪風很富裕的時間來捕捉整個解密過程。
雪風把自己剛才嵌入的用來填字的小程序又剔除了出來,讓解密程序重新運行,他打開內存監視器,然後重新運行那個軟件。現在,他要做的,就是仔細觀察整個解密過程中,內存的變化情況。
連續運行了幾次,內存監視器幫雪風以50毫秒為一單位,對解密過程中內存的變化情況進行了「拍照」,這也是內存監視器所能達到的最快速度了。雪風對照了幾次的記錄,發現沒有大致的差異,隨即關掉了軟件,把CPU頻率又回復到原本的頻率。
雪風把內存記錄調了出來,一邊仔細對比,一邊在心裡揣摩著那個解密程序的運行流程。或許,只有雪風這樣的瘋子才會使用這樣的方法來破解軟件,一般人就是有工具的配合,面對如此密密麻麻的數據,頭也已經大了,可是雪風這個傢伙,卻是能一眼就看出其中的變化規律,並由此來推測解密軟件的運行流程。
上次破解量子密碼,雪風采用的方法是快,因為量子密碼紛繁複雜,解密過程十分緩慢,所以雪風選擇了「以快打慢」,所謂的「一快打三慢」,大概就是如此。而這次,雪風又選擇了慢,人為放緩了對方解密程序的解密過程,企圖通過慢鏡頭,找到對方招式中的破綻,這也就是武學招式中的「以靜制動,後發制人」吧。
「奶奶個腿,原來是這麼回事!」很快,雪風就發現了其中的問題,所有拍下來的內存記錄中,每個時段的內存都是無規律的,只有一個時段,內存卻出奇地一致。根據這一點,雪風大膽判斷,程序的設計者當初為了讓自己解密程序能準確填入這個16個字符,在讀入16個字符後,做了一次校對,就是為了做到字符填入時的同步。
這就好像是我們平時的「校表」,在填字遊戲開始前,轉動表盤的一方把表盤復原到一個默認的位置,然後和插入鑰匙的一方把各自的表都調整到同一時刻,再約好幾點幾分,到什麼位置,插入第幾把鑰匙。等雙方做好以上的工作後,表盤開始轉動,插入鑰匙的一方只需按照時間表來走,就會分秒不差地把鑰匙準確插入相應的鑰匙孔內。
雪風粗粗估計了一下這個「校表」的過程,大概需要50毫秒,但是這點時間足夠自己把16個字符按照順序填入各自的位置了,因為在這個校表的過程中,表盤是不動的,鑰匙孔的位置也是不變的。
雪風很快找到了表盤靜止時那16個鑰匙孔的位置,並確定了他們的先後順序,然後重新設計了一個程序,嵌入那個軟件的頭部,這個程序更為簡單,只需在程序運行後的固定時間裡,填入固定字符到固定位置就可以了。
做好這一切,雪風拍拍胸口,平抑了一下激動的心情,他的眼前似乎出現了一個巨大的表盤,還有16個人,每個人地手裡都拿著一把鑰匙,各自站好了位置,只等一聲令下,便把鑰匙塞進去面前的鑰匙孔內。
雪風此時就等著「卡」的一聲,那是鑰匙插進去,門自動彈開的聲音,那一定很悅耳。雪風笑了一下,就晃動鼠標,雙擊了那個軟件,期待著成功的提示。
「卡~」一聲響過,緊接著又是一聲「滴」的聲音。
「他媽的~」雪風大叫了起來,他並沒有看到門開的一瞬間的景象,因為他的機器,竟然重啟了。