利用ida对程序的静态链接库进行处理
用IDA進行反匯編時最怕遇到的就是跟蹤到了程序靜態鏈接的庫函數中,看得一頭霧水不說,還浪費了大量的時間。其實如果有符號表的話,看看函數名就知道大概功能了,再看看參數就可以pass了。本文以meterpreter主服務dll–metsrv.dll為例,簡要介紹一下利用IDA工具FLAIR來對程序的靜態鏈接庫進行處理的流程
用IDA打開metsrv.dll,如圖:
圖上部的條框區域,綠色部分是IDA能識別出的庫函數,藍色區域IDA認為是程序自身的代碼,由于程序有600多K,代碼量非常大,左側的函數窗口可以看到都是諸如sub_10002A90之類的函數名,這時我們懷疑程序是不是靜態編譯鏈接了某些函數.
1.用string、file等工具識別靜態庫及版本,平臺等
root@bt:/# strings metsrv.dll >1.txtroot@bt:/# cat 1.txt...OpenSSL 0.9.8k 25 Mar 2009.\ssl\ssl_lib.c...root@bt:/#找到了”OpenSSL 0.9.8k”這樣的字符串,我們初步判斷是對openssl庫進行了靜態鏈接。需要下載openssl 0.9.8k對應的庫文件libeay32.lib和ssleay32.lib,可以點擊這里下載。
2.下載FLAIR61
FLAIR全名庫文件快速識別與鑒定技術(Fast Library Acquisition for Identification and Recognition),IDA安裝包里并沒有自帶這個工具。
官方下載地址:flair61。但需要驗證用戶名和密碼。
也可以點擊這里下載IDA6.1及相關工具,里面包括FLAIR61。
3.創建模式文件####
這里對windows環境下的openssl庫創建模式文件,使用.\bin\win目錄下的pcf工具。
D:\flair61\bin\win>pcf.exe libeay32.lib libeay.patD:\flair61\bin\win>pcf.exe ssleay32.lib ssleay.pat.\plb.txt文件包含這個工具的詳細參數說明。
4.創建簽名文件####
D:\flair61\bin\win>sigmake.exe libeay.pat libeay.siglibeay.sig: modules/leaves: 4246/2632, COLLISIONS: 106See the documentation to learn how to resolve collisions.創建簽名文件時一般會產生沖突,這是因為兩個函數的字節序列部分可能相同。
這時打開生成的.exc文件,將前四行刪除,在沖突的函數組中如果想顯示哪個函數名稱,在前面添加+號,如果只想在數據庫中添加函數注釋,在前面添加-號。
_atalla_mod_exp_dh 02 2109 8B4424188B4C24148B542410508B442410518B4C2410525051E8........83C4 +_atalla_mod_exp_dsa 02 2109 8B4424188B4C24148B542410508B442410518B4C2410525051E8........83C4_PEM_write_bio_ECPrivateKey 04 913F 8B44241C8B4C24188B542414508B442414518B4C2414528B542414508B442414+_PEM_write_RSAPrivateKey 04 913F 8B44241C8B4C24188B542414508B442414518B4C2414528B542414508B442414_PEM_write_bio_RSAPrivateKey 04 913F 8B44241C8B4C24188B542414508B442414518B4C2414528B542414508B442414_PEM_write_ECPrivateKey 04 913F 8B44241C8B4C24188B542414508B442414518B4C2414528B542414508B442414-_PEM_write_bio_DSAPrivateKey 04 913F 8B44241C8B4C24188B542414508B442414518B4C2414528B542414508B442414_PEM_write_DSAPrivateKey 04 913F 8B44241C8B4C24188B542414508B442414518B4C2414528B542414508B442414_ec_GFp_simple_is_at_infinity 00 0000 8B4C240833C03941300F94C0C3......................................+_ec_GF2m_simple_is_at_infinity 00 0000 8B4C240833C03941300F94C0C3......................................這時再執行sigmake.exe libeay.pat libeay.sig就能生成簽名文件,ssleay.pat的處理同上。
5.應用簽名文件####
將libeay.sig、ssleay.sig文件拷貝至[IDADIR]/sig目錄下,用IDA重新打開metsrv.dll,選擇 File->Load File->FLIRT Signature File
,分別將libeay.sig、ssleay.sig文件導入到metsrv.dll的數據庫中:
這時靜態鏈接的符號表都出來了,可以跟處理之前的圖進行對比看看效果:
總結
以上是生活随笔為你收集整理的利用ida对程序的静态链接库进行处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类的逆向分析
- 下一篇: 程序员的吸星大法-IDA反汇编工具初探