udbg
1.0.0
用 Rust 編寫的用於二進制調試和內存黑客的跨平台庫。
minidump 、 PE file ,甚至是具有額外副檔名的作業系統核心空間。 udbg中主要有兩類接口,目標資訊接口和調試接口。
目標資訊的接口,抽象化為UDbgTarget特徵,代表一個可觀察的調試目標,在大多數情況下它是一個active process ,也可以是一個minidump ,一個PE file ,甚至是具有額外擴展的OS-Kernel空間。
UDbgTarget包含這些函數, memory operation (讀/寫/枚舉), module枚舉, thread枚舉,句柄handle/FDs枚舉等。轉儲,記憶體搜尋、 hook掃描、惡意程式碼掃描等
調試接口,抽象化為UDbgEngine Trait,主要提供流程控制的能力。有一個default implementation ,通常它包裝 Windows 上的偵錯功能,並包裝 Linux 上的 ptrace 介面。
上述大部分介面都被設計為動態對象,這是為了腳本綁定友好,udbg預設提供lua bindings 。
目標資訊介面當前狀態
| 平台/目標 | 內存操作 | 記憶體列表 | 線 | 模組/符號 | 句柄/FD列表 |
|---|---|---|---|---|---|
| 視窗進程 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Linux行程 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| MacOS行程 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 小型轉儲 | ✔️(唯讀) | ✔️ | ✔️ | ✔️ | ? |
| PE文件 | ✔️(唯讀) | ✔️ | - | - | - |
調試介面當前狀態
| 平台/目標 | 偵錯符號 | 斷點 | 觀察點(HWBP) | 多目標 |
|---|---|---|---|---|
| Windows(x86/x64) | ✔️(PDB) | ✔️ | ✔️ | ✔️ |
| 視窗(aarch64) | ✔️(PDB) | ✔️ | ✔️ | ✔️ |
| Linux(x86_64) | ✔️(精靈) | ✔️ | ✔️ | ✔️ |
| Linux(aarch64) | ✔️(精靈) | ✔️ | ✔️ | ✔️ |
src/test.rs fn targetsrc/test.rs fn test_debug