一碗酸梅湯 作品

第284章 江寒的操作

    以江寒的調試功力,跟蹤這麼老實的程序,自然是易如反掌。

    他只花了3分鐘就找到了關鍵call。

    隨後就將這個call語句設為斷點,再按下ctrl+f2,重新運行crackme。

    再次填寫序列號、用戶名,點擊【login】……

    很快,程序中斷在了關鍵call上。

    江寒按了一下f7,進入了函數體內部,這樣就看到了一段以ret結尾的反彙編代碼。

    這段代碼的功能,就是根據username計算sn(序列號)。

    到了這裡,就比較考驗基本功了,必須讀懂反彙編指令。

    當然,這對於訓練有素的人來說,也是soeasy的一件事。

    江寒花了十分鐘,將算法分析了出來。

    看得出來,設計者的確沒有故意難為人,算法設計得十分簡明。

    首先,把username進行base64變換,然後對新串中的字符,做ascii碼值累加操作,再經過一番算不上十分複雜的數學運算後,就得到了一個新的字符串。

    此字符串就是與username對應的sn,允許包含大小寫字母和數字,以及一些特殊字符,算法保證sn與username對應的唯一性……

    這道題可以說是白給,只要稍微懂點逆向調試,基本功別太差,一般都能輕鬆搞定。

    江寒估計,官方第一關弄得這麼簡單,可能只是打算過濾一下參賽者,將那些沒事兒來湊熱鬧的人排除掉。

    接下來是第二題。

    仍然是crackme,但和第一題比起來,難度突然提高了十倍不止。

    什麼花指令、虛擬機、靜態反彙編、動態反調試……

    凡是當前流行的保護手段,幾乎一應俱全。

    而其核心算法,更是動用了sha1和md5。

    也就是主辦方還算有點良心,沒用出rsa2048這種大殺器,否則大家比的就不是逆向水平,而是計算機的性能了。

    江寒足足用了二十分鐘,才計算出了正確的sn,通過了這一關。

    隨後,他就一道題、一道題,連續挑戰了下去。

    越往後,題目的難度越高,花費的時間自然也會稍微長一些。

    不光只有crackme,還有一些別的玩法,比如破解個虛擬賬號系統的密碼之類的。

    最有趣的是第5題。

    目標數據在內存中構成了一個虛擬魔方,並根據username隨機打亂。

    要求構建一個字符串,用此字符串的二進制序列,作為操作指令,讓這個魔方復原。

    令人髮指的是,這個魔方不但高達11階,還有隨機生成的“塊壞”!

    壞塊的意思是,你看不到它的“顏色”,但如果不能放在正確的位置,就不能通過最後的檢測。