Pharos静的バイナリ分析フレームワークは、カーネギーメロン大学のソフトウェアエンジニアリング研究所のプロジェクトです。このフレームワークは、バイナリプログラムの自動分析を促進するように設計されています。ローレンスリバモア国立研究所が開発したRose Compiler Infrastructureを使用して、分解、制御フロー分析、命令セマンティクスなどを使用しています。このソフトウェアは、BSDライセンスの下でリリースされます。
現在の分布は、以前のバージョンの大幅な更新であり、Ooanalyzerツール、実験的パス分析コード、パーティショナーの改善、マルチスレッド、その他多くの小さな機能の改善など、さまざまな機能を追加します。
Pharosフレームワークは研究プロジェクトであり、コードは積極的な開発を行っています。いかなる目的のためのフィットネスの保証は提供されていません。このリリースは、ビルドの指示、単体テスト、およびいくつかのドキュメントを提供しますが、多くの作業を行ってください。いくつかの選択ビルド構成をテストしましたが、ソースコードの移植性を積極的にテストしていません。詳細については、インストール手順を参照してください。
このコードをリリースする主な目的は、研究への透明性を提供し、他のバイナリ静的分析研究者との会話を刺激することであるため、この作業についての質問にCory Cohen [email protected]にお気軽にお問い合わせください。私はタイムリーに応答することができないかもしれませんが、私は最善を尽くします。
Apianalyzerは、指定されたデータと制御関係を持つAPI呼び出しのシーケンスを見つけるためのツールです。この機能は、ファイルを開く、書き込み、閉じるなど、一般的なオペレーティングシステムの相互作用パラダイムを検出するために使用することを目的としています。
ooanalyzerは、オブジェクト指向の構成要素の分析と回復のためのツールです。このツールは、2018年にコンピューターと通信セキュリティに関するACM会議と通信セキュリティに関するConference Conferenceで公開された「C ++クラスとコンパイルされた実行可能ファイルからメソッドを回復するためにロジックプログラミングを使用する」というタイトルの論文の主題でした。このツールは、プログラムの機能間のオブジェクトポインターを追跡することにより、オブジェクトメンバーとメソッドを識別します。このツールの以前の実装は「objdigger」という名前でしたが、Prologルールを使用してオブジェクト属性を回復するための実質的な再設計を反映するように改名されました。ツールの現在のバージョンは、Microsoft Visual C ++によってコンパイルされた32ビットX86実行可能ファイルの分析のみをサポートしています。非常に大きな実行可能ファイルでooanalyzerを実行する方法に関するより詳細な指示については、これらのメモを参照してください。
Pharos分布は、OoanalayzerによってエクスポートされたOO情報をGhidraリバースエンジニアリングツールセットにインポートしたプラグインを含めるために使用されていました。現在および将来、その機能を取得するには、Ooanalayzerプラグインによって提供された機能を含むKaiju Ghidraプラグインをインストールします。
Callanalyzerは、バイナリプログラムのAPI呼び出しに静的パラメーターを報告するためのツールです。これは主に現在の呼び出し条約、パラメーター分析、およびタイプ検出機能の実証ですが、プログラム内のコードの有用な分析も提供します。
FN2YARAは、実行可能ファイルプログラムで機能を一致させるためのYara署名を生成するツールです。かなりの数の機能を共有するプログラムは、共通の動作を持つ可能性があります。
FN2HASHは、実行可能なプログラムで機能のさまざまなハッシュやその他の記述特性を生成するためのツールです。 FN2yaraと同様に、バイナリ類似性分析をサポートするために使用するか、機械学習アルゴリズムの機能を提供することができます。
DumpMasmは、他のツールと同じスタイルのPharosフレームワークを使用して、実行可能ファイルからの分解リストをダンプするためのツールです。それは積極的に維持されていません。代わりにhttp://rosecompiler.org/rose_html_reference/rosetools.htmlの代わりに、Roseの標準の再susivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedivedは使用することを検討する必要があります。