| 開発者 | DynamoRIOの作者 |
|---|---|
| 初回リリース | 2002年6月 |
| 安定版リリース | 11.0.0 [1]
/ 2024年10月31日 |
| プレビューリリース | 7.0.0-RC1 / 2017年2月3日 |
| リポジトリ |
|
| オペレーティング·システム | Android、Linux、Windows |
| プラットフォーム | AArch32、AArch64、IA-32、x86-64 など |
| タイプ | インストルメンテーションフレームワーク、プロファイラー |
| ライセンス | BSDA の |
| Webサイト | ダイナモリオ |
DynamoRIO は、動的プログラム分析ツールの開発のためのBSD ライセンスの動的バイナリインストルメンテーションフレームワークです。DynamoRIO は、 AArch32、IA-32、x86-64命令セット アーキテクチャで実行されるAndroid、Linux、Windowsオペレーティング システムのユーザー空間アプリケーションを対象としています。
DynamoRIO はもともと動的バイナリ最適化システムとして作成されましたが、その後セキュリティ、デバッグ、分析ツールとして使用されるようになりました。DynamoRIO は、Hewlett-Packardの Dynamo 最適化システムと MITのRuntime Introspection and Optimization (RIO) 研究グループ[2]とのコラボレーションから生まれたため、2 つの名前が合わさって「DynamoRIO」と呼ばれています。2002 年 6 月に独自のバイナリ ツールキットとして初めて公開され、その後 2009 年 1 月に BSD ライセンスでオープンソース化されました。
概要
DynamoRIO は、プログラムの実行を元のバイナリ コードからそのコードのコピーにリダイレクトするプロセス仮想マシンです。次に、必要なツールのアクションを実行するインストルメンテーションがこのコピーに追加されます。元のプログラムには変更が加えられず、特別な準備も必要ありません。DynamoRIO は完全に実行時に動作し、レガシー コード、動的にロードされるライブラリ、動的に生成されるコード、自己修正コードを処理します。
DynamoRIO はすべての制御フローを監視して、対象プログラムの実行全体をキャプチャします。この監視により、ツールが存在しない場合でもオーバーヘッドが追加されます。DynamoRIO の平均オーバーヘッドは 11 パーセントです。[3]
特徴
DynamoRIO のAPI は、仮想化プロセスの詳細を抽象化し、プログラムの動的コード ストリームの監視または変更に重点を置いています。ツールは、特定のプログラム ポイントでツール アクションを呼び出すトランポリンをプログラムに挿入できます。ツールは、アセンブリ言語レベルでインストルメンテーションを挿入することもできます。これにより、ツール アクションとツールのパフォーマンスをきめ細かく制御できます。DynamoRIO は、対象プログラムの実行中のどの時点でもツールがインストルメンテーションを削除または変更できるようにすることで、適応型最適化と適応型インストルメンテーションをサポートします。
DynamoRIO は、スレッドの作成、ライブラリのロード、システム コール、シグナル、例外など、いくつかの一般的なプログラム イベント ポイントでツールに登録されたコールバックを呼び出します。また、その API を使用すると、コードに加えて、 プログラムのライブラリとアドレス空間を検査することもできます。
DynamoRIO の API とイベント コールバックはクロスプラットフォームとして設計されており、同じツール コードを Windows と Linux、IA-32 と x86-64 の両方で動作させることができます。DynamoRIO は、ツールのスタック、メモリ、ファイル アクセスなどのリソースを、ツールが動作しているプログラムから分離することで、ツールの透明性を確保します。
DynamoRIO には、シンボル テーブルアクセス、関数のラッピングと置換、メモリ アドレス トレース ユーティリティを 提供するために API を拡張するライブラリが含まれています。
ツール
DynamoRIO用に構築された最初のツールは、動的最適化に重点を置いていました。[4]汚染チェック[5]やプロファイリング[6]など、さまざまな目的で多くの研究ツールが構築されてきました。
プログラム指導
DynamoRIO をセキュリティ分野に適用した結果、プログラム シェパーディングと呼ばれる手法が生まれました。[7]プログラム シェパーディング インストルメンテーションは、各プログラム命令の起源と命令間の制御フローを監視し、セキュリティ エクスプロイトがプログラムを制御するのを防ぎます。2003 年、プログラム シェパーディングは、Determina という新興企業で、 Memory Firewall というブランド名のホスト侵入防止ソフトウェアとして商品化されました。Determina は2007 年 8 月にVMwareに買収されました。[8]
メモリー博士
Dr. Memoryは、 DynamoRIO上に構築され、LGPLライセンスの下でリリースされたオープンソースのメモリデバッガーです。[9] Dr. Memoryは、シャドウメモリを使用してメモリ割り当てとメモリアクセスを監視します。初期化されていないメモリへのアクセス、解放されたメモリへのアクセス、ヒープオーバーフローとアンダーフロー、メモリリークなどのメモリ関連のプログラミングエラーを検出します。その機能セットはValgrindベースのMemcheckツールと似ていますが、WindowsとLinuxの両方で動作し、Memcheckの2倍の速度です。[10]
参照
- 動的プログラム分析
- ピン
- ヴァルグリンド
- アドレスサニタイザー(ASan)
注記
- ^ 「リリース 11.0.0」。2024年10月31日。 2024年11月23日閲覧。
- ^ RIO プロジェクト: 実行時のイントロスペクションと最適化
- ^ 透明な動的計測、図 4
- ^ 適応型動的最適化のためのインフラストラクチャ
- ^ TaintTrace: 動的バイナリ書き換えによる効率的なフロートレース
- ^ PiPA: マルチコアシステムにおけるパイプラインプロファイリングと分析
- ^ プログラムシェパーディングによる安全な実行
- ^ VMware が HIPS プロバイダーの Determina を買収
- ^ Dr. Memory: Windows および Linux 用メモリ デバッガー
- ^ ドクター・メモリーによる実践的な記憶力チェック
参考文献
- Bruening, Derek (2004)。効率的で透過的かつ包括的なランタイム コード操作 (Ph.D.)。マサチューセッツ工科大学。
- Derek Bruening、Timothy Garnett、Saman Amarasinghe (2003 年 3 月)。「適応型動的最適化のためのインフラストラクチャ」。コード生成と最適化に関する国際シンポジウムの議事録。米国カリフォルニア州サンフランシスコ。pp. 265–275。
外部リンク
- 公式サイト
- DynamoRIO ユーザー向けメーリングリスト
- ドクターメモリーのホームページ
