[pwn&re]使用IDA flair恢復靜態編譯去符號的庫函數名

使用IDA flair恢復去符號的庫函數名


在一些時候經常遇到靜態編譯並且去符號的題目,打開的畫風就是這樣的:
在這裏插入圖片描述
和這樣的:
在這裏插入圖片描述
雖然說我們也可以根據參數的類型或者參數的數量手動分析出原函數的名字或功能,但無論如何也太麻煩了,再者有的時候還會有一些其他的干擾,那更會加大分析難度,這裏提供一個簡單的還原庫函數名稱的IDA功能:flair,即庫文件快速識別。

IDA flair

flair通過對庫文件中的函數生成簽名,並生成對應的簽名文件,然後和程序中的函數進行簽名匹配找到匹配的函數來幫助我們還原庫函數。使用也非常簡單,我們只需將對應的簽名文件(sig文件)導入到IDA的對應目錄下便可使用了。

這裏有大佬製作好的簽名文件,各個架構各個系統各個版本都有,可以自行尋找:

https://github.com/push0ebp/sig-database

使用方法是將對應的簽名文件導入到IDA的這個目錄下:IDA 7.0\IDA_Pro_v7.0_Portable\sig\pc,然後進入IDA按shift+F5快捷鍵,也可以File->Load file-> FLIRT signature file來操作,之後可以選擇對應的sig文件:
在這裏插入圖片描述
在彈出的新窗口中右鍵添加sig文件:
在這裏插入圖片描述
爲了比較好找我自己導入的,我已經將這個文件夾裏原來的文件備份然後刪了,只保留我自己導入的。有時候我們不知道編譯的是哪個版本的libc庫,所以可以多導入幾個簽名文件:
在這裏插入圖片描述
可以看到根據導入的簽名文件不同,識別出來的函數數量也是不同的,有的匹配到300+,有的卻一個沒有匹配到(也和後導入,有些“本能識別出來,卻被先導入的識別了“)。然後再回去看就會發現好多函數已經完成了識別:
在這裏插入圖片描述
當然即便是這樣,在程序中還是會有些函數還原不了,也就是沒找到庫函數,那就只能手動還原了,但這也給我們減少了很多的工作量:
在這裏插入圖片描述

自己製作簽名文件

當然除此之外,還可以自己製作簽名文件,使用IDA附帶的flirt插件即可,如果沒有可以點擊我分享的鏈接下載:

https://pan.baidu.com/s/16YOLuhWI3yM9XJKcqGBo7Q
在這裏插入圖片描述
之後解壓出來在\flair70\bin\linux目錄下就是生成簽名工具的文件,要使用到pelf和sigmake兩個程序:
在這裏插入圖片描述
接下來找到要製作簽名文件的靜態編譯庫libc.a,一般在/lib/x86_64-linux-gnu目錄下,或者/usr/lib/x86_64-linux-gnu目錄下:
在這裏插入圖片描述
然後將其拷貝到flair的目錄,依次執行下面兩條指令:

./pelf libc.a test.pat
#如果這句話報錯: Unknown relocation type 42 (offset in section=0x16).那麼要加一個參數:
./pelf -r42:0:0 libc.a test.pat
#如果有出現別的錯誤,繼續添加這個參數 -r錯誤號:0:0
./sigmake test.pat test.sig

然後查看是否成功,有時沒有成功就是文件中籤名有衝突,這時不會生成.sig而是生成了一個.exc文件:
在這裏插入圖片描述
查看這個文件:
在這裏插入圖片描述
大概意思就是有些模塊的簽名是一樣的,我們要選擇使用哪個,看紅框中的內容,大體意思就是:**在想要選擇的模塊前面標記’+’,在不確定的選擇前面標’-’,什麼也不做就會排除所有模塊,最後要刪掉這四行內容。**所以我們要進行選擇,這裏我隨便選的:
在這裏插入圖片描述
選擇之後繼續執行

./sigmake ./test.pat ./test.sig

然後發現還是有一個衝突:
在這裏插入圖片描述
繼續修改test.exc文件,這次新衝突在最下面緊接着剛修改過的內容:
在這裏插入圖片描述
直到修改到不報錯爲止,然後成功生成sig文件:
在這裏插入圖片描述

自動檢測腳本

這裏還有一個可能有幫助的腳本,可以檢測二進制文件靜態編譯的是哪個庫:

https://github.com/maroueneboubakri/lscan

這個腳本使用非常簡單:

python ./lscan.py -S .sig的目錄 -f 要掃描的二進制文件

最後會輸出和哪個庫最相近:
在這裏插入圖片描述
這裏使用的是腳本自帶的庫,也可以使用我們在上面下載的庫來掃描,只不過哪個庫目錄太多了…這裏只是演示。

參考資料:

https://xz.aliyun.com/t/4484

https://blog.csdn.net/dupei/article/details/99835255

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章