
Binary Ninja 用 binjatron プラグインの PyQt5 フロントエンドで、初心者がリバースエンジニアリングを学びやすくするためのハイライト機能を備えています。
x86 バイナリをリバースエンジニアリングする能力は、情報セキュリティ業界の外でも重要なスキルです。しかし、利用可能なトレーニング教材が豊富にあるにもかかわらず、習得が難しいスキルであることに変わりはありません。多くの学生が、単純なバイナリであってもそれなりの進歩を遂げるには多くの背景知識が必要であることに不満を表明しています。
Binary Ninja は、比較的低価格で、クリーンなインターフェース、そして使いやすさから、学生向けに販売されることがよくあります。低レベルおよび中レベルの中間言語も、命令が何を行うかを理解するための簡単な方法を提供します。このプロジェクトは、バイナリの実行を視覚化しやすくすることで、Binary Ninja を初心者にとってさらに優れたツールにすることを目的としています。
このプロジェクトは、NCC Group の 2017 年サマーインターンシッププログラムの成果物です。ビジュアルデバッグコンポーネントは、Matasano Security が制作した組み込みセキュリティ CTF である Microcorruption の精神的後継と考えることができます。今後のアップデートは https://github.com/ehennenfent/binja_dynamics で追跡されます。 NCC Group は、2017 年 8 月 18 日以降にリポジトリに加えられた変更について一切責任を負いません。
Binary Ninja プラグインフォルダ 内で、次を実行してください:
git clone https://github.com/ehennenfent/binja_dynamics.git
cd binja_dynamics
./install.sh
バイナリを読み込んだ後、ツールメニューの Enable Dynamic Analysis Tools 項目をクリックします。デバッガウィンドウが表示され、ツールバーのボタンで制御できます。実行をステップ実行すると、UI はプログラムの状態を反映してリアルタイムに更新されます。Binjatron のおかげで、現在の命令とブレークポイントはバイナリビューでハイライト表示されます。各メモリアドレスとレジスタについて、直前の命令の結果として値が変更された場合は、その値がオレンジ色でハイライトされます。同様に、現在のスタックフレームの先頭と末尾(および戻りアドレスの予測位置)がハイライトされ、初心者がメモリのどの部分に注目すべきかを識別しやすくなります。トレースバックビューアは現在のスタックフレームのバックトレースを表示し、プラグインが戻りアドレスを見つけると予測するメモリアドレスの位置にバイナリビューを自動的にジャンプするボタンを提供します。一部の関数では、スタックフレームがプラグインの想定どおりに破棄されないため、この予測された戻りアドレスは常に正しいとは限りません。

(上記のスクリーンショットでは、ベースポインタはオリーブグリーンで表示されています)
インターフェースの正確な動作を理解するために、ソースコードを参照しなければならない場合があります。これに備えて、設計上の決定事項や実装の詳細の多くはインラインコメントで説明されています。
wiki はまだ比較的内容が少ないですが、つまずきやすい点のリストや開発ログなどのコンテンツは、トラブルシューティングに役立つかもしれません。
始める際に役立つ例については、binja_sensei リポジトリ を参照することを検討してください。
Binary Ninja を除き、install.sh がこれらの依存関係を処理します。