一碗酸梅湯 作品
第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階,還有隨機生成的“塊壞”!
壞塊的意思是,你看不到它的“顏色”,但如果不能放在正確的位置,就不能通過最後的檢測。
他只花了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階,還有隨機生成的“塊壞”!
壞塊的意思是,你看不到它的“顏色”,但如果不能放在正確的位置,就不能通過最後的檢測。