(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.
有人可以形容我如何将ds:0x804a008地址映射到线性地址吗?我可以用“x / xw地址”命令吗?如果不清楚我想知道代码跳转中第一个jmp函数的位置。
答案 0 :(得分:1)
0x804a008
是进程线性地址空间中的一个地址 - 该内存位置的DWORD是将跳转到的地址(即,0x804a008
是指针)。
`
所以
x/xw 0x804a008
将转储指针的内容,并
disasm *0x804a008
将反汇编跳过该指针的代码。
答案 1 :(得分:-2)
Modern x86 OS不使用分段寻址。实模式分段地址只能代表1Mb的地址空间。此寻址方案仅在引导过程中出于兼容性原因使用。
操作系统将所有段寄存器设置为选择器,代表进程的32位地址空间,但您不必担心。
ds:0x804a008与0x804a008
相同