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を参照してください。