老司機帶你玩轉Radare2
1、Radare2簡介
說起逆向,你想到的可能是 IDA Pro
, OllyDBG
等。
而 Radare2
是一款開放原始碼的逆向工程平臺,它的強大超越你的想象,包括反彙編、分析資料、打補丁、比較資料、搜尋、替換、虛擬化等等,同時具備超強的指令碼載入能力,並且可以執行在幾乎所有主流的平臺 (GNU/Linux, .Windows *BSD, iOS, OSX, Solaris…)
上。可謂是一大神器。
這裡我們使用 Kali
系統來學習它,因為 Kali
系統自帶了這個神器。
2、Radare2使用
開啟終端,使用 radare2 -h
可以檢視其幫助資訊

radare2
裡面有個很牛逼的工具: rabin2
rabin2
可以獲取包括 ELF, PE, Mach-O, Java CLASS
檔案的區段、頭資訊、匯入匯出表、字串相關、入口點等等,並且支援幾種格式的輸出檔案。使用 man rabin2
可以檢視 rabin2
的使用幫助文件。
然後我們通過破解一個 crackme
來學習神器 radare2
的使用。
首先使用 rabin2
打印出二進位制檔案的系統屬性、語言、位元組序、框架、以及使用了哪些加固技術

可以看到這是一個32位的 elf
檔案,沒有剝離符號表並且是動態連結的
接下來嘗試執行它

可以看到,不論是否加引數都會顯示 wrong
。 接下來使用 radare2
來進行破解

可以黃色輸出了一個地址 (0x08048370)
,這就是它自動識別的程式入口點
或者也可以使用ie命令手動打印出入口點

接下來輸入 aa
或者 aaa
進行細緻的分析
分析完成之後, r2
會將所有有用的資訊和特定的名字繫結在一起,比如區段、函式、符號、字串,這些都被稱作 flags
, flags
被整合進 <flag spaces>
,一個 flag
是所有類似特徵的集合
接下來看看所有的 flag

我們打印出 imports
下面的資訊

為了獲取更多的資訊,我們可以再列出資料段裡的字串

出現了關鍵字,一個是 success
,一個是我們之前執行時的 wrong….
那我們接下來就跟著 success
走,看看哪兒進行了呼叫 輸入命令 axt @@ str.*

axt
命令用來在 data/code
段裡找尋某個地址相關的引用(更多的操作,請看 ax?
).
@@
就像一個迭代器,用來在地址空間裡不斷地匹配後面一系列相關的命令(更多操作,請看 @@?
)
str.*
是一個萬用字元,用來標記所有以 str.
開頭的資訊,不光會列出字串標誌,同時也包括函式名,找到它們到底在哪裡以及何處被呼叫。
接下來我們看看 radare2
分析出來哪些函式

看到兩個引起我們注意的 sym.beet
和 sym.rot13
接下來我們用 s main
指令定位到main函式入口處,然後用 pdf
輸出反彙編程式碼

分析函式的執行流程,我們知道二進位制程式是通過獲取 beet函式的返回結果來判斷是否正確
因此我們去beet函式反彙編的部分看看 因此我們定位到 beet
輸入 [email protected]
進行跳轉

自動跳轉到 beet
函式的反彙編部分

我們看到輸入的引數被拷貝到了一個快取空間裡,這個空間的地址是 ebp – local_88h
。 local_88h
就是十進位制的 136
。由於 4
個位元組會被用來儲存 ebp
的地址, 4
個位元組被用來儲存返回地址,所以這個緩衝區得大小是 128
個位元組.它們加起來剛好是 136
. 我們輸入的引數被拷貝到緩衝區後被用來和 sym.rot13
的返回結果作對比, Rot-13
是一個著名的替換密碼演算法,在 ctf
和 crackme
中被廣泛使用,這個函式接受了 9
個十六進位制值作為引數,但是上圖中看起來 r2
好像沒有識別出來到底是什麼字元,這裡我們需要用 ahi s
來做些處理.輸入

ahi s
是用來設定字串特定的偏移地址(使用 ahi?
獲取更多用法), @@
是一個迭代器,可以用來接受後面輸入的多個引數,執行完這條命令後,圖形檢視會自動重新整理。

可以看到
0x080485a3 0x080485ad 0x080485b7 複製程式碼
後面的字元都已經顯示出來了
我們已經看到了之前無法識別的字串 Megabeets
(根據位元組序反向壓棧順序得到).
這個二進位制檔案將我們傳入的引數來和經過 rot13
處理後的 Megabeets
作比較
接下來我們通過 rahash2
求出這個字串的校驗值

Zrtnorrgf
就是用來和我們輸入的字串作比較,成功則返回
success
。我們驗證一下:接下來輸入
ood?
進入除錯模式 將
Zrtnorrgf
作為引數進行除錯,輸入
dc
檢視結果

輸出了 success
,我們成功破解了這個小軟體,也藉此掌握了 radare2
的基本用法。
是不是躍躍欲試了呢?實踐才能學到真本領!戳下面的連結即可進行線上實操,無需自己搭建環境噢!
:point_down::point_down::point_down::point_down::point_down:
3、說明
本文由合天網安實驗室原創,轉載請註明來源。
關於合天網安實驗室
合天網安實驗室(www.hetianlab.com)-國內領先的實操型網路安全線上教育平臺 真實環境,線上實操學網路安全 ; 實驗內容涵蓋:系統安全,軟體安全,網路安全,Web安全,移動安全,CTF,取證分析,滲透測試,網安意識教育等。
(本文來源:合天網安實驗室--領先的實操型網路安全線上教育平臺)