You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When you do emulation with [Unicorn Engine](https://www.unicorn-engine.org/), do you want to inspect the inner state during every step?
3
+
`udbserver` is a debugging plugin for [Unicorn Engine](https://www.unicorn-engine.org/) that implements the [GDB Remote Serial Protocol](https://sourceware.org/gdb/onlinedocs/gdb/Remote-Protocol.html).
4
4
5
-
`udbserver` is a plugin for Unicorn, provides a debug server which implements [GDB Remote Serial Protocol](https://sourceware.org/gdb/onlinedocs/gdb/Remote-Protocol.html). You can connect it by a `GDB` client and do debugging as what you do on real program.
6
-
7
-
`udbserver` can be used as a crate by Rust program, but it also provides a C library and bindings for other languages. You can use it inside most Unicorn based projects!
5
+
It enables GDB-compatible debugging capabilities for Unicorn-based emulation projects, allowing you to inspect and control the emulation state through a GDB client.
8
6
9
7
## Features
10
8
@@ -15,7 +13,7 @@ When you do emulation with [Unicorn Engine](https://www.unicorn-engine.org/), do
15
13
*[x] Watchpoint
16
14
*[ ] Ctrl-C interrupt
17
15
18
-
## Architectures support
16
+
## Architectures Support
19
17
20
18
* i386
21
19
* x86\_64
@@ -26,54 +24,32 @@ When you do emulation with [Unicorn Engine](https://www.unicorn-engine.org/), do
The `handle` should be the raw handle of a Unicorn instance, `port` is the port to be listened, `start_addr` is the address which when Unicorn runs at the debug server will start and wait to be connected. if `start_addr` is provided with `0`, the debug server will start instantly.
40
-
41
-
You can call this API inside a Unicorn hook, so you can integrate `udbserver` inside other Unicorn based project easily.
27
+
## Installation & Usage
42
28
43
-
## Used in Rust
29
+
### Python
44
30
45
-
You can use `udbserver` as a crate in `Rust`.
31
+
The easiest way to get started is via pip:
46
32
47
-
You can check the [example](examples/server.rs) on how to use it.
33
+
``
34
+
pip install udbserver
35
+
``
48
36
49
-
And you can try it by:
37
+
Check out the [Python binding](bindings/python) for examples and documentation.
50
38
51
-
```sh
52
-
$ cargo run --example server
53
-
```
39
+
### Rust
54
40
55
-
Then you can connect it with `gdb-multiarch`.
41
+
As a native Rust project, you can use `udbserver` directly as a crate. Check out the [example](examples/server.rs):
56
42
57
-
## Installation
43
+
``
44
+
cargo run --example server
45
+
``
58
46
59
-
`udbserver` provides a C-compatible set of library, header and pkg-config files, which help you to use it with other languages.
47
+
### Other Languages
60
48
61
-
To build and install it you need to use [cargo-c](https://crates.io/crates/cargo-c):
49
+
`udbserver` provides bindings for several languages:
- `start_addr`: The address at which the debug server will start and wait for connection. If set to `0`, the debug server starts immediately
15
+
16
+
You can call this API inside a Unicorn hook to integrate `udbserver` within other Unicorn-based projects.
17
+
18
+
## Installation
19
+
20
+
`udbserver` provides a C-compatible set of library, header and pkg-config files. To build and install it you need to use [cargo-c](https://crates.io/crates/cargo-c):
0 commit comments