[論文レビュー] Datalog Disassembly
本論文では、静的解析とヒューリスティクスを統合することで、ストリップドなx64バイナリから再アセンブル可能で記号的に正確なアセンブリを生成する、Datalogに基づく新規なDdisasmというデシーマブルフレームワークを提示する。Datalogの宣言的推論を活用して命令境界の特定と記号的参照の曖昧性解消を実現することで、Ramblrなどの最先端ツールと比較して、7,658個のバイナリ(多様なコンパイラおよび最適化レベルから得たもの)において、より高い精度と速度を達成した。
Disassembly is fundamental to binary analysis and rewriting. We present a novel disassembly technique that takes a stripped binary and produces reassembleable assembly code. The resulting assembly code has accurate symbolic information, providing cross-references for analysis and to enable adjustment of code and data pointers to accommodate rewriting. Our technique features multiple static analyses and heuristics in a combined Datalog implementation. We argue that Datalog's inference process is particularly well suited for disassembly and the required analyses. Our implementation and experiments support this claim. We have implemented our approach into an open-source tool called Ddisasm. In extensive experiments in which we rewrite thousands of x64 binaries we find Ddisasm is both faster and more accurate than the current state-of-the-art binary reassembling tool, Ramblr.
研究の動機と目的
- ソースコードが入手不可能な状況下で、とりわけバイナリの書き換えや解析を目的とした、ストリップドバイナリの正確なデシーマブルを解決すること。
- 命令とデータの区別、および記号的参照の解消という、デシーマブルにおける根本的な曖昧性を、統合された静的解析とヒューリスティクスによって克服すること。
- 再アセンブル可能な出力を生成するスケーラブルで高精度なデシーマブラを開発すること。その出力は、バイナリの強化、リファクタリング、インストルメンテーションに適している。
- Datalogの宣言的でルールベースの推論が、複数のデシーマブル解析を効率的かつ正確に統合するのに特に適していることを実証すること。
提案手法
- 複数の解析からの重み付き証拠を用いて、命令境界と記号的・定数的オペランドの区別という意思決定問題としてデシーマブルをモデル化する。
- すべてのデシーマブル論理を1つのDatalogプログラムに実装し、論理的依存関係が実行順序を決定し、解析のモジュラーな組み合わせを可能にする。
- 定義-使用チェーン、新規のレジスタ値解析、およびデータアクセスパターン解析を含む静的解析を実行し、記号的曖昧性解消の証拠を収集する。
- 各解析およびヒューリスティクスからの証拠に重みを付与し、Datalogルールを用いてそれらを集約し、各解釈の信頼性スコアを計算する。
- 高性能DatalogエンジンであるSouffleを用い、Datalogプログラムを最適化されたC++コードにコンパイルして、効率的な実行を実現する。
- 意味を保った変更(例:NOPの挿入)、再アセンブル、レグレッションテストを通じて、結果の正当性を検証する。
実験結果
リサーチクエスチョン
- RQ1統合されたDatalogベースのフレームワークは、複数の静的解析とヒューリスティクスを効果的に統合し、ストリップドバイナリのデシーマブル精度を向上させることができるか?
- RQ2Datalogの宣言的性質は、命令的実装と比較して、デシーマブルコンponentsの統合をどのようによりスケーラブルかつ保守可能にするか?
- RQ3Datalogの推論エンジンは、複雑な実世界バイナリを処理する際、既存のデシーマブラーよりも速度と精度の両面で優れているとまでは言えるか?
- RQ4異なるコンパイラおよび最適化レベルにおいて、記号的参照の解消と再アセンブルの正しさを維持するという点で、このシステムはどの程度の性能を示すか?
主な発見
- 7つのコンパイラおよび5〜6つの最適化フラグでコンパイルされた7,658個のx64バイナリにおいて、DdisasmはRamblrを速度と精度の両面で上回った。
- Coreutilsベンチマークスイートでは、ICCを除く全コンパイラおよび最適化レベルで、0件の偽陽性および0件の偽陰性を達成した。ICCでは依然としてRamblrを顕著に上回った。
- 実際のアプリケーションテストでは、全コンパイラで0件の破損バイナリおよび0件の偽陽性を達成した。ICCでは、-O3および-Ofastモードで10件の偽陽性および1件の偽陰性を示した。
- CGCベンチマークスイートでは、全コンパイラおよび最適化レベルで0件の偽陽性および0件の偽陰性を維持した。一方、RamblrはICCで最大106件の破損バイナリを報告した。
- ICCでコンパイルされた最も困難なバイナリにおいても、Ddisasmは優れたパフォーマンスを示した。Ramblrは16,000件を超える偽陽性を報告し、深刻な失敗を示した。
- Datalogの使用により、複雑なデシーマブル論理を洗練され、モジュラーかつ保守可能な実装が可能になった。実行順序はすべてデータ依存関係によって決定された。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。