我正在使用gdb
对程序进行逆向工程,我对输入到各种命令的所有地址感到困惑。有没有办法创建(和存储)自定义变量,以便我可以说x/i my_addr_name
而不是x/i 0xdeadbeef
?
答案 0 :(得分:1)
gdb具有用户可定义的convenience variables来保存各种值。
(gdb) set $my_addr_name=$pc
(gdb) x/i $my_addr_name
=> 0x400c7d <main+390>: lea -0xa0(%rbp),%rax
(gdb) ptype $my_addr_name
type = void (*)()
便捷变量具有类型,print
命令将使用该命令,但x
命令使用显式或默认格式,并且不考虑表达式的类型。< / p>
我可以x/i 0xdeadbeff
说my_addr_name+16
我不这么认为,除非写一些额外的C或python代码。 gdb的C源代码有一个build_address_symbolic
函数,它通过符号表查找最接近地址的符号。如果没有创建自定义符号表,然后使用add-symbol-file
命令加载它,或者编写python扩展来实现x
命令的替代,我认为这种自定义是不可能的,目前