在 gdb 中为地址创建自定义名称?
Create a custom name for an address in gdb?
我正在使用 gdb
对程序进行逆向工程,我对输入各种命令的所有地址感到困惑。有没有办法创建(和存储)自定义变量,这样我就可以说 x/i my_addr_name
而不是 x/i 0xdeadbeef
?
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
命令使用显式或默认格式并且不考虑表达式的类型.
could I have x/i 0xdeadbeff
say my_addr_name+16
我不这么认为,除非编写一些额外的 C 或 python 代码。 gdb 的 C 源代码有一个 build_address_symbolic
函数,它通过符号 tables 查找最接近地址的符号。除了创建自定义交易品种 table,然后使用 add-symbol-file
命令加载它,或者编写 python 扩展来实现 x
命令的替代方案之外,我不会目前认为这样的定制是可能的。
我正在使用 gdb
对程序进行逆向工程,我对输入各种命令的所有地址感到困惑。有没有办法创建(和存储)自定义变量,这样我就可以说 x/i my_addr_name
而不是 x/i 0xdeadbeef
?
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
命令使用显式或默认格式并且不考虑表达式的类型.
could I have
x/i 0xdeadbeff
saymy_addr_name+16
我不这么认为,除非编写一些额外的 C 或 python 代码。 gdb 的 C 源代码有一个 build_address_symbolic
函数,它通过符号 tables 查找最接近地址的符号。除了创建自定义交易品种 table,然后使用 add-symbol-file
命令加载它,或者编写 python 扩展来实现 x
命令的替代方案之外,我不会目前认为这样的定制是可能的。