Кроссплатформенная библиотека для двоичной отладки и взлома памяти, написанная на Rust.
minidump , PE file и даже пространство ядра ОС с дополнительным расширением. В udbg есть два основных типа интерфейсов: интерфейсы целевой информации и интерфейсы отладки.
Интерфейсы целевой информации, абстрагированные как признак UDbgTarget , представляют собой наблюдаемую цель отладки, в большинстве случаев это active process , а также это может быть minidump , PE file или даже пространство ядра ОС с дополнительным расширением.
UDbgTarget содержит эти функции, memory operation (чтение/запись/перечисление), перечисление module , перечисление thread , перечисление handle/FDs и т. д. На основе этих функций мы можем реализовать некоторые утилиты для различных типов целей, такие как дамп модуля , поиск в памяти , сканирование перехватчиков , сканирование вредоносного кода и т. д.
Интерфейсы отладки, абстрагированные как особенность UDbgEngine , в основном обеспечивают возможность управления процессом. Существует default implementation , обычно она включает в себя функции отладки в Windows и интерфейсы ptrace в Linux.
Большинство из вышеперечисленных интерфейсов были разработаны как динамические объекты, что удобно для привязки сценариев, а udbg по умолчанию предоставляет lua bindings .
Текущее состояние целевых информационных интерфейсов
| Платформа/Цель | Работа с памятью | Список памяти | Нить | Модуль/Символ | Список дескрипторов/FD |
|---|---|---|---|---|---|
| Процесс Windows | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Linux-процесс | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Процесс MacOs | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Минидамп | ✔️ (только чтение) | ✔️ | ✔️ | ✔️ | ? |
| PE-файл | ✔️ (только чтение) | ✔️ | - | - | - |
Текущее состояние интерфейсов отладки
| Платформа/Цель | Символ отладки | Точка останова | Точка наблюдения (HWBP) | Множественная цель |
|---|---|---|---|---|
| Windows(x86/x64) | ✔️ (ПДБ) | ✔️ | ✔️ | ✔️ |
| Windows (aarch64) | ✔️ (ПДБ) | ✔️ | ✔️ | ✔️ |
| Linux(x86_64) | ✔️ (эльф) | ✔️ | ✔️ | ✔️ |
| Linux (aarch64) | ✔️ (эльф) | ✔️ | ✔️ | ✔️ |
src/test.rs fn targetsrc/test.rs fn test_debug