
binsync v5.15.4
git を基盤とした、デコンパイラ間コラボレーションのためのリバースエンジニアリングプラグイン。
BinSync
BinSyncは、デコンパイラを問わずきめ細かなリバースエンジニアリングの共同作業を可能にする、Gitバージョン管理システム上に構築されたデコンパイラコラボレーションツールです。BinSyncは、mahaloz、angrチーム、およびSEFCOM研究ラボによって開発されています。また、Shellphishハッキングチームによる利用がその大部分を占めています。
優れたデコンパイラはすべて、Reverse Engineering Artifacts(REA)と呼ばれる共通オブジェクトを共有しています。これらのREAは、BinSyncの同期機能の中核です。対応しているREAは以下のとおりです:
- 関数ヘッダー(シンボル、引数、型)
- スタック変数(シンボル、型)
- 構造体
- 列挙型
- コメント
注:すべての型は、構造体などのユーザー作成型をサポートしています。
オンラインヘルプの詳細は、以下のDiscordに参加してください:
クイックスタート
すべてのインストールでは、Pythonを使用した2部構成のインストーラーを使用するのが最適です:
pip3 install binsync && binsync --install
BinSyncはBinary Ninjaのプラグインマネージャーでも利用できます。
GhidraでBSを使用する予定がある場合は、PyGhidraモードで起動する必要があります。
ChatGPTユーザーなどの追加のBS機能を使用する予定がある場合は、次のようにパッケージをインストールします:pip3 install binsync[extras]。これにより、サポート用の追加パッケージがインストールされます。
完全なインストール情報については、クイックスタートドキュメントをお読みください。
開発者の場合、パッケージを編集可能(-e)な状態でインストールし、pip>=23.0.0であることを確認してください。
対応プラットフォーム
- IDA Pro: >= 8.4(古いバージョンをお使いの場合は、BinSync v4.10.1を使用してください)
- Binary Ninja: >= 2.4
- angr-management: >= 9.0
- Ghidra: >= 12.0(PyGhidraモード)
すべてのバージョンで、システムにPython >= 3.10とGitがインストールされている必要があります。 Ghidraのサポートはまだ非常に初期段階です。そのため、アーティファクト名の同期やコメントなどの最小限の機能のみを想定してください。
デコンパイラのサポート進捗
前述のセクションでデコンパイラをサポートしていますが、すべてのデコンパイラが同じレベルの同期でサポートされているわけではありません。 アーティファクトのサポート、プル、プッシュ、オートプッシュの違いを理解するには、デコンパイラ利用入門をお読みください。
IDA Pro
| 操作 | 関数ヘッダー | スタック変数 | グローバル変数 | 構造体 | 列挙型 | コメント |
|---|---|---|---|---|---|---|
| シンボル | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 型 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| プル | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| プッシュ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| オートプッシュ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Binary Ninja
| 操作 | 関数ヘッダー | スタック変数 | グローバル変数 | 構造体 | 列挙型 | コメント |
|---|---|---|---|---|---|---|
| シンボル | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 型 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| プル | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| プッシュ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| オートプッシュ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Ghidra
| 操作 | 関数ヘッダー | スタック変数 | グローバル変数 | 構造体 | 列挙型 | コメント |
|---|---|---|---|---|---|---|
| シンボル | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 型 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| プル | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| プッシュ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| オートプッシュ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
angr-management
| 操作 | 関数ヘッダー | スタック変数 | グローバル変数 | 構造体 | 列挙型 | コメント |
|---|---|---|---|---|---|---|
| シンボル | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| 型 | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| プル | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| プッシュ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
| オートプッシュ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
スクリプト
スクリプトについては、DecLibを参照してください。これにより、すべてのリフティングとデータ操作をPythonで行うことができます。
スポンサー
BinSyncおよび関連プロジェクトは、スポンサーシップなしでは実現できませんでした。 順不同で、これまでに、または現在、多数のBinSyncプロジェクトのいずれかをスポンサーしてくださっているすべての組織に感謝申し上げます。