
Collareは、別の場所でファイルを共有する必要なく、プロジェクト中に1つ以上のツールを使用する必要があるチームを使用できるようにすることを目的とする共同リバースエンジニアリングのツールです。また、非常にシンプルなユーザー管理が含まれているため、さまざまなチームがさまざまなプロジェクトで作業するマルチプロジェクトサーバーに使用できます。ツールのバックエンドは、 nginxがその前にdockerで実行されているシンプルなFlask appで、ファイルと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ベースのデスクトップUIの場合、次のデスクトップファイルを使用できます(ファイルへのパスは、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を開くと、アプリケーションを開始する必要があります)。 Cutter(Rizin)プロジェクトを保存するときは、手動で.rzdbを追加する必要があります。ファイルが既に持っている拡張子を削除しないでください(たとえば、 exe so )。
バイナリNinjaのサポートを有効にするには、パスにファイルbinaryninjaを追加します( cmd / terminalを開くと、 binaryninjaアプリケーションを開始する必要があります)。バイナリニンジャはデフォルトでファイル拡張子を削除していますが、ツールはこれを説明するため、元のファイル拡張子を手動で戻す必要はありません。プロジェクトをデフォルトのパスに保存するだけで、ローカル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を追加し、 .bat (Windows用)をパスにanalyzeHeadless ( cmd / terminalを開くと、 ghidraRunアプリケーションを開始する必要があります)。 analyzeHeadless Ghidraルートディレクトリのsupportフォルダーにあるため、両方のファイルに対応するためにPATHを調整してください。 Ghidraでデータベースを初期化するプロセスは、プロジェクトを作成せずにGhidraがファイルを処理する方法がないため、もう少し複雑です。したがって、Ghidraデータベース( ghdbと呼ばれる)をプッシュできるようにするために、自動処理が失敗するたびにプロジェクトを手動で作成するように求められます(基本的にプロセスを処理したときはいつでも) gprファイルへのパスを指定します(申し訳ありません)。
APKおよびJARファイルは、多くの場合、リバースエンジニアリングの取り組み中に遭遇するため、Collareツールはこれらのタイプのファイルの操作もサポートしています。これらのツールをサポートできるようにするには、ファイルandroid-studioとjadxが両方がパスにあることを確認する必要があります( cmd / terminalを開くと、 android-studio / jadxアプリケーションを開始する必要があります)。 JADXツールは、JAR/APKファイルの逆コンパイルを実行するために使用され、Android Studioは結果のファイルを開くために使用されます。 Android Studioの使用はandroid-studioコマンド(Intellij Ideaなど)の下でGradleプロジェクトを処理する他のツールをエイリアスできるため、オプションです。
独自のREADMEファイルに記載されているようにサーバー側を展開した後、使用済みの証明書ファイルをアプリケーションのすべてのユーザーに配布し、管理者パスワードでデフォルトのadminアカウントを使用して、 admin Adminタブを介して他のユーザーアカウントを作成する( adminユーザーのパスワードを変更することを忘れないでください)。ユーザーが構成されている場合、誰でも独自のプロジェクトを作成し、ツール自体の操作を開始できます。
プロジェクトを作成するには、ユーザーはまずURL、資格情報を入力してリモートサーバーに認証し、サーバーのIDを検証する証明書を提供する必要があります。その後、ステータスはConnectedされ、既存のプロジェクトを選択または削除するか、名前(英数字と_のみ)を入力し、プロジェクトに参加するユーザーを選択するだけで新しいプロジェクトを作成することができます( Adminタブの後半で変更できます)。プロジェクトを作成しているユーザーがユーザーリストに自動的に追加されるため、自分自身を選択する必要がないことに注意してください。

Project Viewタブに表示されると、新しいフォルダー(英数字の文字と_のみ)を作成し、ドラッグアンドドロップを使用してファイル(またはフォルダー)をアップロードできます。

このツールには現在、プロジェクトの保存時に自動アップロードを可能にするプラグインまたはネイティブフックがないため、目的のデータベースを作成した後、ローカルDBファイルのプッシュが手動でトリガーされることが必要です。これは、アップロードされたバイナリファイルを右クリックしてバイナリを処理するツールを選択することで実行できます。基本的な分析を行うことができますが、何も変更せずにファイルを保存することを強くお勧めします(カッターのrzdbを塗りつぶし、Ghidraとはまったく異なるプロセス)。パスとファイル名を変更しないでください。これを行い、分解者を閉じた後、バイナリ名を右クリックして、 Push Local DBsオプションを選択できます。これにより、ローカルデータベースがアップロードされ、これからはDBファイルを操作したいときにCheck-outを実行する必要があります。各バイナリはすべてのツールで個別に処理できるが、バイナリごとに1つのDBファイルのみが存在できることに注意してください。

ファイルを検査するだけの場合、目的のDBファイルを右クリックして、オプションOpen File (またはダブルクリック)を選択できます。ファイルがチェックアウトされている場合、これによりローカルファイルが開き、DBファイルの変更を自由に実行できます。完了した場合(または単に変更をプッシュする場合) Check-inオプションを選択できます。これにより、変更がサーバーにアップロードされ、さらに変更のためにファイルをチェックアウトするかどうかを促します。ローカルの変更を破棄する場合は、コンテキストメニューからUndo Check-outオプションを選択します。これにより、変更が破棄され、サーバーからファイルを続行できます。最初にCheck-out操作を行わずにファイルを開くと、偽の読み取り専用モードでそれを開きます(DBファイルの変更を行うことができますが、次回チェックアウトまたはファイルを開くときに失われます)。

このツールは、すべてのCheck-inアクションがDBファイルの新しいバージョンとしてカウントされるように、DBファイルのバージョンのバージョンをサポートします。そのバージョンに適用されている変更により多くのコンテキストを提供するために使用されるバージョンのコメントを挿入するように求められます。その後、ファイルの以前のバージョンを開いたりチェックアウトしたり、それらに取り組むことができます。

このリポジトリ内のプラグインフォルダーには、サポートされているツールのプラグインが含まれています。これにより、複数のツールを使用して1つのバイナリで作業する場合に備えて、ツール間でコメントと機能名を共有できます。興味のあるツールの標準プラグインのインストール手順に従ってください。各プラグインは、 ImportとExport機能を提供します。ツール間でデータを共有する予定の場合は、常に最初にデータImport 、すでに他の誰かによって変更された機能の名前を変更しないようにしてください。プラグインにいくつかのキャッチが付いている場合、それらは指定されたプラグインのREADMEファイルに記載されています。プラグインは、複数の人の同時コラボレーションのために、データを他のツールに移行することを目的としていることに注意してください。
