udbg
1.0.0
Rust で書かれたバイナリ デバッグとメモリ ハッキング用のクロスプラットフォーム ライブラリ。
minidump
、 PE file
、さらには追加の拡張子を備えた OS-Kernel スペースにすることもできます。 udbg には、ターゲット情報とデバッグ インターフェイスという 2 つの主な種類のインターフェイスがあります。
UDbgTarget
特性として抽象化されたターゲット情報のインターフェイスは、監視可能なデバッグ ターゲットを表します。これはほとんどの場合active process
であり、 minidump
、 PE file
、さらには追加の拡張子を備えた OS-Kernel 空間である場合もあります。
UDbgTarget
には、 memory operation
(読み取り/書き込み/列挙)、 module
列挙、 thread
列挙、 handle/FDs
列挙などの関数が含まれています。これらの関数に基づいて、モジュール ダンプなどのさまざまな種類のターゲットに対していくつかのユーティリティを実装できます。メモリ検索、フックスキャン、悪意のあるコードスキャンなど
UDbgEngine
特性として抽象化されたデバッグ インターフェイスは、主にプロセス制御の機能を提供します。 default implementation
があり、通常は Windows ではデバッグ関数をラップし、Linux では ptrace インターフェイスをラップします。
上記のインターフェイスのほとんどは、スクリプト バインディングに適した動的オブジェクトとして設計されており、udbg はデフォルトでlua bindings
提供します。
ターゲット情報インターフェースの現状
プラットフォーム/ターゲット | メモリ操作 | メモリーリスト | 糸 | モジュール/シンボル | ハンドル・FD一覧 |
---|---|---|---|---|---|
Windows プロセス | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Linux プロセス | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
MacOS プロセス | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
ミニダンプ | ✔️ (読み取り専用) | ✔️ | ✔️ | ✔️ | ? |
PEファイル | ✔️ (読み取り専用) | ✔️ | - | - | - |
デバッグインターフェイスの現在のステータス
プラットフォーム/ターゲット | デバッグシンボル | ブレークポイント | ウォッチポイント(HWBP) | 複数のターゲット |
---|---|---|---|---|
Windows(x86/x64) | ✔️ (PDB) | ✔️ | ✔️ | ✔️ |
Windows(aarch64) | ✔️ (PDF) | ✔️ | ✔️ | ✔️ |
Linux(x86_64) | ✔️ (エルフ) | ✔️ | ✔️ | ✔️ |
Linux(aarch64) | ✔️ (エルフ) | ✔️ | ✔️ | ✔️ |
src/test.rs
fn target
を参照してください。src/test.rs
fn test_debug
を参照してください。