|
Rizin
unix-like reverse engineering framework and cli tools
|
$ gdbserver :2345 /bin/ls (gdb) target remote localhost:2345
$ rizin -D gdb gdb://127.0.0.1:2345
rizin have support for connecting to remote GDB instances:
x86-32 x86-64 arm arm64 sh winedbg x x - - - qemu x x ? x - gdbserver x x ? ? ? x = supported ? = untested - = not supported
read/write memory
Writing or reading memory is implemented through the m/M packet.
read registers
Reading registers is currently implemented through the <g> packet of the gdb protocol. It returns the whole register profile at once.
write registers
There are two ways of writing registers. The first one is through the P packet. It works like this: P<register_index>=<register_value> The second one is the G packet, that writes the whole register Profile at once. The implementation first tries to use the newer P packet and if it receives a $00# packet (that says not implemented), it tries to write through the G packet.
Supported Packets:
g : Reads the whole register Profile at onceG : Writes the whole register Profile at oncem : Reads memoryM : Writes memoryvCont,v : continues execution of the binaryP : Write one register