Karta:一款功能強大的IDA源代碼輔助插件
關于Karta
Karta是一款功能強大的IDA Python插件,該工具可以識別并匹配給定代碼中的開源代碼庫。該插件使用了一種獨特的技術,使其能夠支持大型二進制文件(>200000個函數),而同時幾乎不會影響整體性能。
Karta所使用的匹配算法是位置驅動的,這意味著它的主要焦點是定位不同的編譯文件,并根據文件中的原始順序匹配每個文件的函數。這種匹配方式依賴于開源函數的數量K,而不是二進制文件的大小N,因此可以實現顯著的性能提升。
使用場景
我們認為Karta這個IDA插件有三大使用場景:
- 搜索目標文檔,確定已使用的開源代碼庫列表(包含版本信息);
- 匹配支持的開源庫及其中的符號,以幫助對惡意軟件進行逆向工程分析;
- 匹配支持的開源庫及其中的符號,以幫助在專用代碼中搜索特定代碼,實現針對二進制/固件的逆向工程分析;
項目目錄結構
- src:插件的源代碼目錄
- configs:預置的*JSON配置文件
- compilations:生成配置文件的編譯提示,以及從過去的開源代碼中獲得的經驗教訓
- docs:Sphinx文檔目錄
Karta識別器
Karta的識別器是一個較小的插件,用于標識二進制文件中現有(受支持的)開源庫積起版本。因此,我們不再需要一次又一次地對同一個開源庫進行逆向工程分析,我們只需要運行Karta識別器插件即可獲得所用開源庫的詳細列表。Karta目前支持10多個開源庫,其中包括:
- OpenSSL
- Libpng
- Libjpeg
- NetSNMP
- zlib
- 其他
Karta匹配器
識別目標代碼所使用的開源代碼庫后,可以為特定庫編譯.JSON配置文件(例如libpng版本1.2.29)。編譯后,Karta將自動嘗試在加載的二進制文件中匹配開源代碼庫的函數或符號。除此之外,如果你的開源項目使用了外部函數(memcpy、fread或zlib_inflate),Karta也會嘗試匹配這些外部函數。
工具安裝
(Python 3 & IDA >= 7.4)
如需安裝最新版本的Karta,我們需要本地環境配置好Python 3,然后使用下列命令將該項目源碼克隆至本地:
- git clone https://github.com/CheckPointSW/Karta.git
接下來,運行下列命令來運行Karta的安裝腳本:
- setup.py install
(Python 2 & IDA < 7.4)
在IDA 7.4發布時,Karta僅針對IDA 7.4或更新版本以及Python 3開發。Python2和更早的IDA版本仍然支持Karta v1.2.0版本,這很可能是Python2.X生命周期結束后最后一個受支持的版本。
項目地址
Karta:【GitHub傳送門】