[逆向工程] 二進制拆彈Binary Bombs 快樂拆彈 詳解


二進制拆彈 binary bombs 教你最快速解題,成功拆彈

最近計算機基礎課,的實驗lab2,二進制拆彈,可以說是拆的我很快樂了(sub n, %hair)

此處頭發減n

我剛開始做的時候很是懵逼,首先對linux不熟悉,其次匯編嘛,本來就不簡單,(Python是世界上最好的語言)

首先在開始之前吶,先向大家推薦一個linux下的繪圖軟件 kolourPaint 這個有什么用,看我下面的圖就知道了

把相同的地址標出來,方便自己查找.

還有推薦幾個GDB 常用命令

x/nfq adress // 查看地址 n是查看的個數 f 是格式 常用 x 16進制 u 10進制無符號 s 字符串 q 是查看幾個字

b表示單字節,h表示雙字節,w表示四字節,g表示八字節。當我們指定了字節長度后,GDB會從指內存定的內存地址開始,

讀寫指定字節,並把其當作一個值取出來。

         b //設置斷點 這個很重要

      ni 單步執行  

      info reg //查看寄存器的值

這是用的比較多的 ,這個鏈接有更詳細的 推薦大家學習一下

    https://blog.csdn.net/delbboy/article/details/8080738

 

再來說一下拆彈的幾個小技巧

1.先看代碼里的明碼地址,查看一下說不定就是結果

2.然后找比較指令,尤其是什么像0xc(%ebp) 0x8(%ebp) 比較你輸入的數的指令,有可能這個地方就告訴你結果了吶

3.再找輸入判斷指令,就是判斷你輸入的是不是符合要求,這樣能縮小你要輸入的值的范圍,就算你不懂,拆答案也方便了

4.然后使跳轉指令,要跳轉到,bomb的指令,前面一般都會有比較指令,這個時候,就能查看相應的內存的數據,查到自己的結果

好了接下來進入正題


 

phase_1  :字符串比較

 這個實驗是輸入一個字符串,比較與程序里的是否相同,查詢明碼地址 0x8049ea4

得到字符串When I get angry, Mr. Bigglesworth gets upset.

輸入后結果正確 

這個實驗比較簡單,就不細說了

 

phase_2:  循環圖片使用linux下的KolourPaint制作)

 

phase_3:條件分支

 

phase_4: 遞歸

 

查詢地址 

x804a06f

所以要輸入兩個參數

 

phase_5 : 指針

 

 

查詢地址 0x8049f20 得到數組元素

 

 phase_6: 鏈表指針結構

  • 做前幾關的時候還算比較順利,可以說是運氣比較好吧
  • 但是在這一關,看到這個匯編代碼幾乎沒有頭緒
  • 好不容易查出了 ,六個結構體,於是猜測,可能要輸入的六個數應該是按照
  • 節點值的大小進行排序的結果;

可是我降序排列,升序排列輸入了好幾次都不對,???還有什么可能那

於是仔細查看了一下代碼,發現有一個地方,把輸入的數7-

5變成2 6變1 

這就是這個的坑所在啊!

於是又把之前輸入的數 7- 了一次 果然對了;

 

 

到這里我們可以猜出結構體應該是這樣的

1  strutc asm{
2 
3 int num;   //該處的值
4 
5 int no;   //當前結構體的編號
6 
7 int *next;   //指向下一個元素
8 
9 }

 

 

查詢地址得到

 

 

降序排列 5 2 1 4 6 3 分別7- 得到2 5 6 3 1 4

  • 隱藏關 <secret_phase>
  • 這里終於迎來了我們的大BOSS

先來看看怎么進入吧

 

 

進入phase_defused 查看

調用了一個判斷輸入了幾個參數的輸入函數,3且第三個參數正確就進入了隱藏關

 

 

 

查詢得知 要在第四關 的后面附加的字符串

 

 

於是得到結果0x32 = 50

輸入后結果正確

 

至此我們終於解決了我們的大boss,干杯 ,哈哈哈

最后說一下解題最強法寶------你的計算機基礎課本

為什么那, 這是你課程的實驗,肯定和你所學相關,據我所知用這本書的都有這幾個實驗,可以說這個實驗

和這門課這本書是配套的, 書中自有它的解題之道!

好好看看第三章前40頁,你再來做這個實驗就會恍然大悟原來是這樣啊!

最后希望大家好好學習,取得好成績 ,一起加油吧!!!

本人水平有限

如有問題,歡迎指正

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM