Assembly gdb中的脚本反汇编
我正在使用Assembly gdb中的脚本反汇编,assembly,scripting,gdb,Assembly,Scripting,Gdb,我正在使用gdb脚本逐个指令转储寄存器内容(这不是交互式调试会话,layout asm或TUI模式不存在) 我想将与当前指令对应的机器代码添加到寄存器值中。我已经找到了一个技巧来克服这样一个事实,即反汇编命令旨在为您提供有关当前指令的大量上下文,并且我不知道应该反汇编多少字节才能获得完整指令。无论指令大小如何,1的范围为我提供了以下信息: (gdb) disassemble $pc,$pc+1 Dump of assembler code from 0x400efe to 0x400eff: =
gdb
脚本逐个指令转储寄存器内容(这不是交互式调试会话,layout asm
或TUI模式不存在)
我想将与当前指令对应的机器代码添加到寄存器值中。我已经找到了一个技巧来克服这样一个事实,即反汇编
命令旨在为您提供有关当前指令的大量上下文,并且我不知道应该反汇编多少字节才能获得完整指令。无论指令大小如何,1的范围为我提供了以下信息:
(gdb) disassemble $pc,$pc+1
Dump of assembler code from 0x400efe to 0x400eff:
=> 0x0000000000400efe <main+0>: push %r15
End of assembler dump.
还有另一种显示此信息的方法:
(gdb) x/i $pc
=> 0x400efe <main>: push %r15
(gdb) x/x $pc
0x400efe <main>: 0x56415741
(gdb)x/i$pc
=>0x400efe:推送%r15
(gdb)x/x$pc
0x400efe:0x56415741
但是我找不到一个格式说明符,它可以让我专门提取4157
(我可以接受5741
)。正如您所看到的,面向指令的程序在不显示机器代码的情况下进行反汇编,而hextump不知道指令长度
最后,我需要这个值以一个printf
结尾,这意味着根据我得到的当前输出,仍然需要进行一些解析。我不确定这在纯gdb
脚本中是否可行
如果可能的话,我宁愿避免依赖gdb
python
层
你知道有什么方法可以实现我想做的吗
(gdb) x/i $pc
=> 0x400efe <main>: push %r15
(gdb) x/x $pc
0x400efe <main>: 0x56415741