Skip to main content
QUICK REVIEW

[論文レビュー] GTIRB: Intermediate Representation for Binaries

Eric Schulte, Jonathan Dorn|arXiv (Cornell University)|Jul 2, 2019
Parallel Computing and Optimization Techniques参考文献 11被引用数 6
ひとこと要約

GTIRB は、コードブロック、制御フローグラフ、補助データに基づく最小限で拡張可能なモデルを用いて、生の機械語バイトを格納することで、バイナリ構造と意味論を分離する、言語に依存しないオープンソースの中間表現(IR)である。バイナリ構造と意味論を分離することで、複数のプログラミング言語をサポートするProtobufシリアル化を介して、ツール間の相互運用性を実現し、LLVMがコンパイラ研究に与えた影響と同様のモジュラーで再利用可能なバイナリ解析ツールチェーンの構築を促進する。

ABSTRACT

GTIRB is an intermediate representation for binary analysis and rewriting tools including disassemblers, lifters, analyzers, rewriters, and pretty-printers. GTIRB is designed to enable communication between tools in a format that provides the basic information necessary for analysis and rewriting while making no further assumptions about domain (e.g., malware vs. cleanware, or PE vs. ELF) or semantic interpretation (functional vs. operational semantics). This design supports the goals of (1) encouraging tool modularization and re-use allowing researchers and developers to focus on a single aspect of binary analysis and rewriting without committing to any single tool chain and (2) facilitating communication and comparison between tools.

研究の動機と目的

  • バイナリ解析ツール間の相互運用性の欠如に応えるために、命令セマンティクスやバイナリフォーマットに依存しない共通の中間表現(IR)を設計すること。
  • 解析、リフト、リライトのコンponentを分離することで、研究者がモノリスなフレームワークに縛られることなく、個別の側面に集中できるように、モジュラーなツール開発を可能にすること。
  • 再アセンブリとリライトを支援するため、生のバイトを保持し、外部関数やコードセクションをまたがる制御フローの表現を可能にすること。
  • Protobufを用いた標準化・拡張可能でシリアル化可能なフォーマットを提供することで、ツール間の比較と統合を容易にすること。
  • 優れたオープンソースのディアセンブラ(Ddisasm)と明確に文書化されたIR設計を提供することで、バイナリ解析研究への参画の障壁を低減すること。

提案手法

  • GTIRB は、ByteIntervals、CodeBlocks、DataBlocks を中心とする最小限の構造的モデルを用いてバイナリを表現し、CodeBlocks は実行可能コードとして解釈されるバイト範囲を定義する。
  • 制御フローは、条件付き/非条件付き、直接/間接、および制御フローの種別(例:呼び出し、リターン、システムコール)をエンコードするラベル付きエッジを備えた、関数間制御フローグラフ(ICFG)としてモデル化される。
  • 生の機械語バイトは意味論的解釈を伴わずにIRに直接格納され、外部のディアセンブラーやリアセンブラが独立して処理できる。
  • ProxyBlocks は、IR境界をまたがる外部関数や呼び出しを表現するために使用され、完全なコードカバレッジを必要とせずに、関数間制御フローの表現を可能にする。
  • 余分なパディングやNOPを明示的に記述する代わりにアライメントディレクティブを用いることで、表現の肥大化や複雑さを低減し、意味論的仮定を伴わずにコード構造を保持する。
  • AuxData テーブルは、関数名、エントリポイント、解析結果などの追加メタデータを格納し、コアIRを変更せずにインクリメンタルかつ拡張可能な解析を可能にする。

実験結果

リサーチクエスチョン

  • RQ1異なるバイナリ解析およびリライトツール間の相互運用性を実現する共通の中間表現を設計するには、どのような方法があるか? ただし、特定の命令セマンティクスを強制しないこと。
  • RQ2静的解析とコードリライトを両立できるように、バイナリプログラムを表現するのに十分な構造的抽象化とは何か? また、拡張可能でポータブルである必要がある。
  • RQ3生の機械語をIRに保持し、外部のディアセンブラーやリアセンブラが独立的かつ正確に処理できるようにするには、どのようなアプローチが有効か?
  • RQ4最小限で言語に依存しないIR設計が、関数間解析や再アセンブリを含む複雑なバイナリ解析ワークフローをどの程度サポートできるか?
  • RQ5優れた品質のオープンソースのフロントエンドディアセンブラ(Ddisasm)を備えた標準化されたオープンソースIRは、LLVMがコンパイラ研究に与えた影響に類似した、モジュラーで再利用可能なバイナリ解析ツールのエコシステムを促進できるか?

主な発見

  • GTIRB は、命令セマンティクスを抽象化し、コードブロックと制御フローグラフに基づく最小限で拡張可能なコア構造を提供することで、バイナリ解析ツール間の通信を成功裏に実現した。
  • 意味論的表現ではなく生の機械語バイトを用いることで、より高い柔軟性が得られ、意味論へのコミットメントを回避でき、複数のディアセンブラーやリアセンブラの運用を可能にした。
  • Protobufベースのシリアル化により、異なる言語で書かれたツール間で効率的かつ言語に依存しない相互運用性が実現され、多様な解析フレームワークへの統合が可能になった。
  • ProxyBlocks とアライメントディレクティブの導入により、関数間制御フローとバイナリレイアウトの正確なモデル化が可能になり、不要な複雑さや肥大化を回避した。
  • GTIRB の高品質なディアセンブラーフロントエンドである Ddisasm は、Anger の Ramblr よりも高速かつ正確なディアセンブルを実現し、IR設計の実用的妥当性を裏付けた。
  • GTIRB と Ddisasm のオープンソース化は、LLVMがコンパイラ研究分野で達成した成功に類似した、モジュラーで再利用可能なバイナリ解析ツールのエコシステムの形成を促進する可能性を秘めている。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。