mirror of https://github.com/snare/voltron.git
112 lines
2.8 KiB
Plaintext
112 lines
2.8 KiB
Plaintext
#
|
|
# voltron.gdb
|
|
#
|
|
# This is a set of utility commands for communicating with a voltron standalone server from
|
|
# plain old GDB macro commands. This is used to add some support for voltron to GDB version 6.
|
|
#
|
|
|
|
set $VOLTRON_STACK_SIZE = 256
|
|
|
|
set $voltron_running = 0
|
|
|
|
define voltron_dump_registers_x64
|
|
dump value /tmp/voltron.reg.rip $rip
|
|
dump value /tmp/voltron.reg.rax $rax
|
|
dump value /tmp/voltron.reg.rbx $rbx
|
|
dump value /tmp/voltron.reg.rbp $rbp
|
|
dump value /tmp/voltron.reg.rsp $rsp
|
|
dump value /tmp/voltron.reg.rdi $rdi
|
|
dump value /tmp/voltron.reg.rsi $rsi
|
|
dump value /tmp/voltron.reg.rdx $rdx
|
|
dump value /tmp/voltron.reg.rcx $rcx
|
|
dump value /tmp/voltron.reg.r8 $r8
|
|
dump value /tmp/voltron.reg.r9 $r9
|
|
dump value /tmp/voltron.reg.r10 $r10
|
|
dump value /tmp/voltron.reg.r11 $r11
|
|
dump value /tmp/voltron.reg.r12 $r12
|
|
dump value /tmp/voltron.reg.r13 $r13
|
|
dump value /tmp/voltron.reg.r14 $r14
|
|
dump value /tmp/voltron.reg.r15 $r15
|
|
dump value /tmp/voltron.reg.cs $cs
|
|
dump value /tmp/voltron.reg.ds $ds
|
|
dump value /tmp/voltron.reg.es $es
|
|
dump value /tmp/voltron.reg.fs $fs
|
|
dump value /tmp/voltron.reg.gs $gs
|
|
dump value /tmp/voltron.reg.ss $ss
|
|
dump value /tmp/voltron.reg.eflags $eflags
|
|
end
|
|
|
|
define voltron_update_registers
|
|
voltron_dump_registers_x64
|
|
if $argc == 0
|
|
shell voltron gdb6proxy reg
|
|
else
|
|
shell voltron gdb6proxy reg
|
|
end
|
|
shell rm /tmp/voltron.reg.*
|
|
end
|
|
|
|
define voltron_update_stack
|
|
dump memory /tmp/voltron.stack $rsp ($rsp+$VOLTRON_STACK_SIZE)
|
|
dump value /tmp/voltron.reg.rsp $rsp
|
|
if $argc == 0
|
|
shell voltron gdb6proxy stack
|
|
else
|
|
shell voltron -d gdb6proxy stack
|
|
end
|
|
shell rm /tmp/voltron.stack
|
|
end
|
|
|
|
define voltron_start
|
|
if $voltron_running == 0
|
|
shell voltron server & ; echo $! >/tmp/voltron.pid
|
|
set $voltron_running = 1
|
|
else
|
|
echo Already running\n
|
|
end
|
|
end
|
|
document voltron_start
|
|
Start the voltron server.
|
|
end
|
|
|
|
define voltron_stop
|
|
if $voltron_running == 1
|
|
shell kill `cat /tmp/voltron.pid`
|
|
shell rm /tmp/voltron.pid
|
|
set $voltron_running = 0
|
|
else
|
|
echo Not running\n
|
|
end
|
|
end
|
|
document voltron_stop
|
|
Stop the voltron server.
|
|
end
|
|
|
|
define voltron_status
|
|
if $voltron_running == 1
|
|
echo Voltron is running\n
|
|
else
|
|
echo Voltron is not running\n
|
|
end
|
|
end
|
|
document voltron_status
|
|
Get the status of the voltron server.
|
|
end
|
|
|
|
define voltron_update
|
|
if $argc == 0
|
|
voltron_update_registers
|
|
voltron_update_stack
|
|
else
|
|
voltron_update_registers 1
|
|
voltron_update_stack 1
|
|
end
|
|
end
|
|
document voltron_update
|
|
Send an update to the voltron server.
|
|
end
|
|
|
|
# If you have your own hook-stop defined, comment this out and add `voltron_update` to yours
|
|
define hook-stop
|
|
voltron_update
|
|
end |