1 个不稳定版本
0.1.0 | 2022年4月22日 |
---|
#175 在 模拟器 中
48KB
1K SLoC
udbserver - Unicorn 模拟器调试服务器
当您使用 Unicorn Engine 进行模拟时,您是否希望在每一步都检查内部状态?
udbserver
是一个用于 Unicorn 的插件,它提供了一个实现 GDB 远程串行协议 的调试服务器。您可以通过一个 GDB
客户端连接它,并像在真实程序中一样进行调试。
udbserver
可以作为 Rust 程序的包使用,但它还提供了 C 库和其他语言的绑定。您可以在大多数基于 Unicorn 的项目中使用它!
特性
- 寄存器
- 内存
- 单步执行
- 断点
- 观察点
- Ctrl-C 中断
支持的架构
- i386
- x86_64
- ARM
- AArch64
- MIPS
- PowerPC
用法
API
udbserver
只提供了一个 API
void udbserver(void* handle, uint16_t port, uint64_t start_addr);
handle
应该是 Unicorn 实例的原始句柄,port
是要监听的端口,start_addr
是当 Unicorn 在调试服务器上运行时将启动并等待连接的地址。如果提供了 0
作为 start_addr
,调试服务器将立即启动。
您可以在 Unicorn 钩子内部调用此 API,这样您就可以轻松地将 udbserver
集成到其他基于 Unicorn 的项目中。
在 Rust 中使用
您可以将 udbserver
作为 Rust 中的包使用。
您可以通过查看 示例 了解如何使用它。
尝试以下操作
$ cargo run --example server
然后您可以使用 GDB
客户端连接到它。
安装
udbserver
提供了一套兼容 C 的库、头文件和 pkg-config 文件,这有助于您在其他语言中使用它。
要构建和安装它,您需要使用 cargo-c
$ cargo install cargo-c
$ mkdir build
$ cargo cinstall --release --prefix=/usr --destdir build
$ sudo cp -a build/* /
语言绑定
安装 udbserver
库后,您可以在其他语言中使用 udbserver
。
您可以查看如何使用不同语言使用 udbserver
的示例。
依赖项
约14MB
约316K SLoC