
Collare是一種協作逆向工程的工具,旨在允許在項目期間需要使用多個工具的團隊來協作,而無需在單獨的位置上共享文件。它還包含一個非常簡單的用戶管理,因此可以用於不同團隊在不同項目上工作的多項目服務器。該工具的後端是一個簡單的Flask app ,它在Docker中運行的nginx在其前面運行,可與文件和基於JSON的基於JSON的表現一起使用相關數據。前端是一個基於PYQT的GUI工具,其簡單接口允許管理項目並使用二進製文件及其相應的反向工程數據庫。截至目前,該工具支持Binary Ninja , Cutter (Rizin) , Ghidra , Hopper Dissassembler , IDA , JEB和Android Studio (Decompiled by JADX) 。從這些工具的內部工作中抽像出該實現,以避免使用任何API更改的問題,因此不會直接以插件的形式集成到這些工具中(除了下面所述的數據遷移插件除外)。這項工作純粹基於管理這些工俱生成的文件(實際上僅基於眾所周知的文件擴展名)和簡單的SVN風格的check-out和check-in操作。
從此存儲庫中獲取最新的二進製版本,或克隆倉庫並運行sudo python3 setup.py install或在Windows上使用命令行並運行python3 setup.py install 。在Linux上,這將將工具安裝到PATH ,您將能夠僅使用collare命令運行它。在Windows上,這將把文件放入C:Users<USERNAME>AppDataLocalProgramsPython<PYTHON_VERSION>Scriptscollare.exe (取決於您安裝python)。
對於基於GNOME的桌面UIS,您可以使用以下桌面文件(文件路徑可能會根據Collare和Python的版本而變化):
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=CollaRE
Exec=/usr/local/bin/collare
Icon=/usr/local/lib/python3.8/dist-packages/collare-1.2-py3.8.egg/collare/icons/collare.png
Terminal=false
要啟用對切割器的支持,將文件Cutter添加到路徑上(打開cmd / terminal寫作時, Cutter應啟動應用程序)。保存切割器(Rizin)項目時,您必須手動附加.rzdb 。請勿刪除文件已經具有的擴展名(例如exe so )。
要啟用對二進制忍者的支持,請在您的路徑中添加文件binaryninja ninja(打開cmd / terminal寫作時, binaryninja應該啟動該應用程序)。 Binary Ninja默認情況下將刪除文件擴展名,但是該工具對此進行了解釋,因此無需手動將原始文件擴展放回。在默認路徑中保存項目足以成功推動本地bndb數據庫。
為了支持Hopper拆卸器的支持,請在路徑中添加文件Hopper (打開cmd / terminal寫作時, Hopper應該啟動該應用程序)。 Hopper默認情況下將刪除文件擴展名,但是工具對此進行了解釋,因此無需手動將原始文件擴展放回。簡單地使用Ctrl+S保存項目足以成功推動本地hop數據庫。
為了啟用JEB的支持,將文件jeb添加到您的路徑(打開cmd / terminal寫作時jeb應該啟動應用程序)。這可以通過將OS的默認運行腳本文件重命名為jeb來完成(對於Windows實際上是jeb.bat )。
為了啟用IDA工具的支持,將文件ida64和ida添加到您的路徑(打開cmd / terminal寫作時, ida64 / ida應啟動應用程序)。
為了啟用此工具的支持,將文件ghidraRun添加到路徑analyzeHeadless (Windows的.bat )(.bat)到您的路徑(打開cmd / terminal寫作時ghidraRun應該啟動該應用程序)。請注意,Ghidra根目錄中的analyzeHeadless在support文件夾中,因此請確保調整PATH以容納兩個文件。用Ghidra初始化數據庫的過程更為複雜,因為Ghidra無法在不創建項目的情況下處理文件。因此,為了能夠推動GHIDRA數據庫(稱為ghdb ),您將在自動處理失敗時手動創建項目(基本上每當您處理的文件不是ELF/PE時),然後指定gpr文件的路徑(對不起)。
由於在反向工程工作期間經常遇到APK和JAR文件,因此Collare工具還支持使用這些類型的文件。為了啟用對這些工具的支持,有必要確保文件android-studio和jadx都在路徑中(當您打開cmd / terminal寫作時android-studio / jadx應啟動應用程序)。 JADX工具用於執行jar/apk文件的反編譯,而Android Studio用於打開結果文件。請注意,使用Android Studio是可選的,因為您可以在android-studio Command(例如Intellij Idea)下處理任何其他處理Gradle項目的工具。
如其自己的readme文件中提到的部署服務器端后,有必要向應用程序的所有用戶分配使用的證書文件,並使用帶有admin密碼的默認admin帳戶來創建其他用戶帳戶(不要忘記要通過Admin選項卡更改admin用戶的密碼)。配置用戶時,任何人都可以創建自己的項目並開始使用該工具本身。
要創建一個項目,必須首先通過輸入URL,憑據並提供證書來驗證服務器身份來對遠程服務器進行身份驗證。之後,狀態將變為Connected ,可以選擇或刪除現有項目或創建一個新項目,只需輸入名稱(字母數字字符和_僅_),然後選擇將參與該項目的用戶(可以在稍後在Admin選項卡”中更改)。請注意,正在創建項目的用戶會自動添加到用戶列表中,因此您不必選擇自己。

在Project View選項卡上後,您可以創建新文件夾(字母數字字符,只有_ ,對不起),然後使用拖放來上傳文件(或文件夾)。

由於該工具當前沒有任何插件或本機掛鉤,這些插件或本機掛鉤在保存項目時允許自動上傳,因此需要在創建所需的數據庫後手動觸發本地DB文件按鈕。這可以通過右鍵單擊上傳的二進製文件並選擇要處理二進製文件的工具來完成。您可以進行基本分析,但是強烈建議僅保存文件而不更改任何內容(除了在切刀中附加rzdb以及與Ghidra完全不同的過程外)。不要更改路徑和文件名。執行此操作並關閉拆卸器後,您可以右鍵單擊二進制名稱,然後選擇“ Push Local DBs 。這將上傳本地數據庫,從現在開始,當您要使用DB文件時,您需要進行Check-out 。請注意,每個二進製文件都可以在所有工具中分別處理,但是每個二進製文件只有一個DB文件,並且工具可以存在。

當您只想檢查文件時,您可以右鍵單擊所需的DB文件,然後選擇“ Option Open File (或雙擊)。如果向您簽到文件,這將打開本地文件,您可以自由執行對數據庫文件的任何更改。完成(或者只想推更改時)時,您可以選擇Check-in選項。這將把更改上傳到服務器,並提示您是否要保留檢查文件以進行進一步更改。如果要丟棄本地更改,請從“上下文”菜單中選擇Undo Check-out選項。這將丟棄您的更改,並允許您繼續使用服務器的文件。首先打開文件而無需進行Check-out操作,將以虛假的讀取模式將其打開(您可以更改DB文件,但是下次您結帳或打開文件時會丟失這些模式)。

該工具還以每個Check-in操作將DB文件視為DB文件的新版本的方式支持DB文件。將提示您插入該版本的評論,該版本用於為該版本中應用的更改提供更多上下文。然後,可以打開或簽出文件的先前版本並處理這些版本。

該存儲庫中的插件文件夾包含用於受支持的工具的插件,您可以在工具之間共享評論和功能名稱,以防您使用多個工具在一個二進製文件上工作。按照您感興趣的工具的標準插件安裝說明。每個插件都提供Import和Export功能。當您計劃共享工具之間的數據時,請務必確保首先Import數據,以避免重命名已重命名的功能。如果插件帶有一些捕獲量,則在給定插件的README文件中提到了這些插件。請注意,插件旨在將數據遷移到其他工具,而不是為了同時進行多個人的協作。
