反組譯碼的應用1-軟體破解

來源:互聯網
上載者:User

標籤:ollydbg   破解   彙編   

下面的案例主要介紹反組譯碼的使用價值,即在軟體加解密方面的應用,可以很好地體會到基本的彙編指令在實踐中的應用,也可以認識到Ollydbg在軟體調試過程中的威力。

選用的樣本程式CRACKME.exe程式來自看雪論壇的“從零開始用ollydbg cracking”系列。本文只做學習交流用途,不作其他任何用途。

 

下面開工:

1. 採用ollydbg開啟CRACKME.exe,命令:f3;

2. 註冊的正確與否,程式會快顯視窗,視窗上會帶有字串,那我們這裡就以正確與否的字串作為線索;命令:右鍵->search for-> all referred strings;

3. 找到如下的string:Great work,mate! now try the next CrackMe!",並且雙擊進入,跳轉到調用該字串的地方;

4. 從可見,下面兩個快顯視窗就是最後看到註冊資訊對錯的提醒視窗,那麼以這兩個為線索,查看是從哪裡跳轉到這兩個函數調用起始處的;


5. 滑鼠停在push 30處,可以看到下面的觀察視窗顯示:local call from 0040124C;

也即意味著push 30處是由0040124C處跳轉過來的;那麼查看該處的指令;


6. 此處關鍵的指令就在401241處,通過該處指令的比較,來確定後面序號的正確與否,再來選擇後面的跳轉。

7. 通過在CMP EAX, 0指令處打斷點,我們F9運行程式,程式彈出註冊視窗,我們輸入:


然後按ok後,整個程式就停在我們下斷點的地方。如所示,


8. 根據右邊的注釋,上述的流程就很清晰,401228處的指令將使用者名稱abc字串地址壓入,然後進行處理後,將結果儲存在EAX中,後面的將序號123也做同樣的處理;可以猜測對於序號操作的結果應該輸出在EBX中,這樣後面的CMP EAX, EBX這條語句才說得通;

9. 我們F7單步跟入40122D的函數調用,看到如下的處理過程:


簡單跟蹤下的話,可以發現上述的代碼等同於下面的C語言代碼:

int nameCrack(char* str){char t;int sum = 0;while(*str){int t = (int)(*str);if(t > 0x5A)sum += (int)(t-0x20);str++;}sum = sum ^ 0x5678;return sum;}

對於我們的輸入abc,上述函數的輸出為:0x56BE;

10. 同樣地,我們對於401238處的指令也進行跟蹤調試:


上述的代碼等同於下面的C代碼:

int numCrack(char* str){int sum = 0;while(*str){int c = (int)*str - 0x30;sum = 10*sum + c;str++;}return (sum ^ 0x1234);}

11.根據調試,EAX和EBX的值分別為:56BE和124F,兩者不同,因此解密失敗;為了讓兩者相同,我們保持abc不變,改變序號來實現。

12. 56BE與0x1234亦或操作後的值的十進位表示為:17546。因此我們只要輸入的字串操作的值sum等於17546即可。又因為數位ASSIC碼是從”0x31”開始的,

而代碼中有減去0x30的操作,因此我們輸入的數字只要是17546即可。



反組譯碼的應用1-軟體破解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.