首頁







玄幻奇幻 都市言情 武俠仙俠 軍事歷史 網游競技 科幻靈異 二次元 收藏夾
  • 放肆文學 » 網游競技 » 重生學神有系統» 第284章 江寒的操作
  • 熱門作品最新上架全本小說閱讀紀錄

    重生學神有系統 - 第284章 江寒的操作字體大小: A+
     

    “CrackMe”是很多逆向論壇裏十分流行的玩法。

    一些人爲了測試自己的軟件保護技術,就會製作一些CrackMe程序,讓別人來嘗試破解。

    網上也經常會有一些CM(CrackMe)競賽。

    根據設計者的意圖和加密技術水平,不同的CrackMe,破解難度天差地遠。

    江寒點擊了一下下載鏈接,題目給出的CrackMe,很快就下載了下來。

    然後,先將其運行了起來,觀察一下程序的外在表現。

    這是個Windows PE文件,界面十分樸素,只提供了兩個輸入框。

    一個用來輸入UserName(用戶名),另一個用來輸入SN(serial number,序列號),下面還有個【Login】按鈕,用來檢測UserName和SN是否匹配。

    看完了這些內容,對程序的結構心裏有數之後,江寒就將窗口關掉了。

    隨後,他就打開了著名的調試工具OllyICE,並在調試器中加載了這個CrackMe。

    開始調試之前,先設置個斷點。

    斷點是調試器的一種功能,可以讓程序中斷在需要的地方,以方便分析。

    常用的斷點有INT3斷點、硬件斷點、內存斷點、消息斷點、條件斷點等。

    例如LBUTTON_UP,就是很常用的消息斷點,功能是當鼠標左鍵擡起時,中斷程序運行。

    又如GetDlgItemText斷點,當程序試圖調用Windows的對應API,獲取輸入框裏的文本內容時,就會被攔下。

    江寒先試着設置了GetDlgItemText和GetDlgItemTextA斷點,然後按了下F9,讓程序跑了起來。

    CrackMe的窗口出現後,先隨便輸入一組UserName和SN,然後用鼠標點擊了一下【Login】按鈕。

    結果……

    程序直接彈出了一個MsgBOX(消息框),提示【用戶名和序列號不匹配】。

    很遺憾,在這次嘗試中,斷點並沒有發揮作用。

    這說明在這個CrackMe裏,並沒有使用GetDlgItemText或者GetDlgItemTextA來讀取字符串。

    否則的話,就會被調試器攔截下來,而不會執行關鍵Call了。

    所謂關鍵Call,是指程序中用來計算用戶名和序列號的函數,通常執行完關鍵Call,很快就能找到一個條件跳轉語句。

    如果序列號與用戶名匹配,就會繼續往下執行,否則就彈出出錯提示……

    接下來,江寒又試了一下LBUTTON_UP斷點。

    這次終於成功斷了下來。

    接下來就很簡單了,交替使用F7(步入)、F8(步過)兩個快捷鍵,單步跟蹤即可。

    這個程序是那種很老實的程序。

    意思就是沒有什麼亂七八糟迷惑人的東西,也沒有刻意增加難度,爲難挑戰者。

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

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

    隨後,將這個Call語句,設爲斷點,然後Ctrl+F2,重新運行。

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

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

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

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

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

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

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

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

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

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

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

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

    接下來是第二題。

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

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

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

    而其核心算法,更是動用了SHA1和Md5。

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

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

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

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

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

    最有趣的是第5題。

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

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

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

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

    江寒還得額外寫個魔方通解程序,將這個虛擬魔方轉放進去,用窮舉法求解出復原過程,然後才能根據要求,構造出對應的字符串……

    就這樣,直到下午3點,江寒才終於解決掉了前6道題,來到了最終關門前。

    獎金也順利地到手了1.5萬美元。

    爲什麼是1.5萬?

    第四題做完之後,江寒才發現,原來那道題的獎金,只有前1000位破解者,才能認領……

    好在後面的題目越來越難,過關的人也越來越少,纔沒被其他人把獎金全都搶走。

    最終關。

    江寒滿懷期待地點了進去。

    題目是一個單片機ROM,要求破解其加密機制,去掉防複製模塊,並提交Dump出來的無加密ROM。

    江寒按照要求,下載了目標ROM。

    然後祭出調試工具,加載進來一看……

    江寒頓時就傻眼了。

    我了個去,這不就是自己的壞蘋果嗎?

    KAGGLE也算世界知名平臺了,居然用壞蘋果作爲壓軸。

    怪不得獎金那麼高呢,主辦方沒準根本就沒打算掏這筆錢。

    不過,千不該、萬不該,你們不該一聲不吭地,就用了咱的壞蘋果。

    更不應該的,居然還邀請了我這個“發明人”,參加了這次的錦標賽!

    江寒偷笑了兩聲,然後果斷從硬盤中,翻出了一個文件,上傳到了答題區。

    不是別的,正是壞蘋果的原始ROM文件!

    這是他能想到的,最簡單的拿到500萬的方法。

    想到KAGGLE裏負責這個比賽的人,看到了這個文件之後,種種可能的精彩表情……

    江寒忍不住嘿嘿一笑。

    接下來,就要看KAGGLE官方,到底舍不捨得那500萬了……

    感覺已經有點餓了,江寒他就關掉了電腦。

    打算先去做個飯,解決一下溫飽問題,然後,又飽又暖的時候……

    然而,江寒剛走到廚房門口,就忽然頓住了身形。

    有點不對!

    今天又是在“HackMe”裏闖關,又是玩CrackMe,大腦持續高強度運轉了整整一天。

    可是,居然一點疲倦的感覺都沒有?!

    按照以往的經驗,像是這種用腦強度,不吃個十條、八條冰島紅極參,只怕很長時間都緩不過來。

    然而,今天的狀態卻好得有點出奇。

    這到底是怎麼回事?

    難道……小媳婦不但能幫咱充靈感,還能給咱的大腦充能?

    這有點不太科學吧?

    類似那種喜聞樂見的活動,不增加能量消耗就不錯了……

    江寒思索了一下,忽然心中一動,連忙打開了系統UI。

    看着龍飛鳳舞的【學者】二字,以及緊隨其後的一串小星星,如同呼吸燈一般,一閃一閃……

    江寒不禁若有所悟。



    上一頁 ←    → 下一頁

    總裁爹地惹不起絕世飛刀韶光慢重生之狂暴火法桃運神戒
    金色綠茵吾為元始大天尊邪王欺正妃我的大姐大皇夫同堂:妖孽師兄娶進