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 target
src/test.rs
fn test_debug