著作権 2011-2020 Google LLC
BinNavi はバイナリ分析 IDE です。ユーザーが逆アセンブルされたコードの制御フロー グラフを検査、ナビゲート、編集、注釈を付けたり、実行可能ファイルのコールグラフに対して同じことを実行したり、実行トレースを収集して結合したり、一般に追跡したりできる環境です。アナリストのグループ間での分析結果の共有。
注: BinNavi プロジェクトは現在、活発な開発は行われていません。
BinNavi は、グラフの表示とレイアウトに商用のサードパーティのグラフ視覚化ライブラリ (yFiles) を使用します。このライブラリは非常に強力ですが、簡単に置き換えることはできません。
yFiles を使用して直接開発を実行するには、yFiles の開発者ライセンスが必要です。同時に、商用 yFiles ライセンスを必要とせずにコミュニティが BinNavi に貢献できるようにしたいと考えています。これを実行し、yFiles ライセンスに準拠するには、yFiles へのすべてのインターフェイスを適切に難読化する必要があります。
これを達成するために、次のことを行いました。
com.google.security.zynamics.binnavi
com.google.security.zynamics.binnavi.yfileswrap
com.google.security.zynamics.zylib
com.google.security.zynamics.zylib.yfileswrap
com.google.security.zynamics.reil
com.google.security.zynamics.reil.yfileswrap
yfileswrap
サブパッケージ内のすべてのコードを含む事前構築済みの JAR ファイルを配布しています。事前にリンクされ、yFiles に対して難読化されています。 BinNavi でコードを変更または追加したいが、yFiles ライセンスを持っていない場合は、非 yfileswrap パッケージでほとんど何でも自由に行うことができます。単にlib/yfileswrap-obfuscated.jar
クラスパスに置くだけで済みます。テストして結果を確認します。
yfileswrap
サブディレクトリに変更を加えたい場合は、有効な yFiles ライセンスが必要であることに注意してください。また、BinNavi プロジェクトに貢献する場合は、そのライセンス契約に従う必要があります。これは、内部 API を別の名前などで単純に公開することはできないことを意味します。
私たちはこれを強制します。yFiles 依存関係を持つ BinNavi をオープンソースにする方法を見つけられたことを非常にうれしく思います。また、取得するコードが yFiles ライセンスに準拠していることを確認します。
yFiles ラッパー ライブラリを再構築するには、まずy.jar
とysvg.jar
third_party/java/yfiles
にコピーします。次に、次のようにして再構築します。
mvn dependency:copy-dependencies
ant build-yfiles-wrapper-jar
mvn install:install-file
-Dfile=target/yfileswrap-obfuscated.jar
-DgroupId=com.google.security.zynamics.binnavi
-DartifactId=yfileswrap-obfuscated
-Dversion=6.1
-Dpackaging=jar
-DlocalRepositoryPath=lib
BinNavi は依存関係の管理に Maven を使用しますが、実際のビルドには使用しません。 Java 11 はサポートされる最小バージョンです。
最初から構築するには、次のコマンドを使用します。
mvn dependency:copy-dependencies
ant build-binnavi-fat-jar
BinNavi は、逆アセンブリ/コメント/トレースを保存するために中央の PostgreSQL データベースを利用することに注意してください。そのため、アクセス可能な場所でそのようなインスタンスを実行する必要があります。 BinNavi は次のように起動できます。
java -jar target/binnavi-all.jar
さらに開発を進めるためにコードを Eclipse にロードするには、少しの設定が必要です。
build.xml
を使用します。PROJECT_LOC/src/main/java
java
**/yfileswrap/**
を追加します。CMain
を検索します。ここから出発する準備ができているはずです。
このプロジェクトの一環として、IDA から BinNavi が必要とする PostgreSQL データベース形式に逆アセンブリをエクスポートする IDA Pro プラグインを配布しています。 BinNavi を実行するときは、IDA の正しいパスを設定し、必要に応じて「プラグインのインストール」ボタンをクリックするだけで、逆アセンブリをインポートできるようになります。
現時点では、IDA エクスポート プラグインしかありませんが、近い将来、誰かが他の逆アセンブラ用のエクスポート機能の構築を手伝ってくれることを非常に期待しています。
現時点では、Maven ビルドが BinNavi の信頼できるビルド システムであることに注意してください。 Gradle は純粋に実験的なものであり、変更される可能性があります。
次のコマンドを実行すると、gradle を使用して BinNavi をビルドできます。
Linux / OS X の場合:
$ ./gradlew clean jar
Windows の場合:
/gradlew.bat clean jar
これにより、 build/libs/
の下のプロジェクト ルートに jar が生成されます。
Linux / OS X の場合:
$ ./gradlew eclipse
Windows の場合:
./gradlew.bat eclipse
プロジェクト作成プロセスの一環として、依存関係がダウンロードされます。完了したら、次の手順を実行して Eclipse にロードします。
これで Eclipse ワークスペースがセットアップされ、BinNavi が完成しました。
Linux / OS X の場合:
$ ./gradlew idea
Windows の場合:
./gradlew.bat idea
プロジェクト作成プロセスの一環として、依存関係がダウンロードされます。完了したら、次の手順を実行して IntelliJ にロードします。
これで、IntelliJ 環境がセットアップされ、IntelliJ 用に完成しました。