在gdb中为地址创建自定义名称?

时间:2015-10-21 21:50:00

标签: gdb

我正在使用gdb对程序进行逆向工程,我对输入到各种命令的所有地址感到困惑。有没有办法创建(和存储)自定义变量,以便我可以说x/i my_addr_name而不是x/i 0xdeadbeef

1 个答案:

答案 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 0xdeadbeffmy_addr_name+16

我不这么认为,除非写一些额外的C或python代码。 gdb的C源代码有一个build_address_symbolic函数,它通过符号表查找最接近地址的符号。如果没有创建自定义符号表,然后使用add-symbol-file命令加载它,或者编写python扩展来实现x命令的替代,我认为这种自定义是不可能的,目前