gdb提供读取或写入特定线性地址的功能,例如:
(gdb) x/1wx 0x080483e4
0x80483e4 <main>: 0x83e58955
(gdb)
Run Code Online (Sandbox Code Playgroud)
但是如何指定逻辑地址?我按照以下指示来:
0x0804841a <+6>: mov %gs:0x14,%eax
Run Code Online (Sandbox Code Playgroud)
我如何读取gdb中"%gs:0x14"的内存,或者将此逻辑地址转换为我可以在x命令中使用的线性地址?
注意:我知道在这条指令之后我只能阅读%eax,但这不是我关心的问题
(gdb) info registers ds
ds 0x7b 123
(gdb) disassemble
Dump of assembler code for function printf@plt:
0x0804831c <+0>: jmp DWORD PTR ds:0x804a008
=> 0x08048322 <+6>: push 0x10
0x08048327 <+11>: jmp 0x80482ec
End of assembler dump.
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何将 ds:0x804a008 地址映射到线性地址吗?我可以使用“x/xw 地址”命令吗?如果不清楚,我想知道代码跳转中的第一个 jmp 函数在哪里。