这是我正在查看的代码

0x0000000000401048 <+70>:   mov    0x401ba0(,%rax,4),%eax


这是15个整数的数组。只是想知道如何在gdb中访问索引0到15

感谢

#1 楼

GDB允许您使用C样式的强制类型转换,因此,只要您知道地址,就可以简单地执行此操作:

/>
(gdb) print/x (int[15])(*0x401ba0)


如果在寄存器中有数组的地址,则还可以使用相应的变量($eax等)。

评论


你是上师。

–桑敦·达米卡(Sandun dhammika)
13年4月29日在15:43

#2 楼

(gdb) dump binary memory dump.raw 0x401ba0 0x401bdc


将内存从地址dump.raw转储到文件0x401ba0直到地址0x401bdc

将检查另一个选项:

x/nfu <address>
Print memory.
n: How many units to print (default 1).
f: Format character (like „print“).
u: Unit.
Unit is one of:
b: Byte,
h: Half-word (two bytes)
w: Word (four bytes)
g: Giant word (eight bytes)).


评论


那将使:x / 15w 0x401ba0

– dbrank0
13年4月28日在8:19

#3 楼

要读取和写入数组中的15个元素,请执行以下操作:

(gdb) set variable $A = (int*)0x401ba0
(gdb) p $A[0] = 1
...
(gdb) p $A[14]


要检查其当前值,请检查<43 />

评论


在某些情况下,可能需要设置写(==设置写开启)。

– 0xC0000022L♦
13年4月28日在23:56