如何编写一个表达式来干扰GDB中的指针?

Shu*_*eng 3 c++ x86 assembly gdb gnu

假设EAX包含指向某个值的指针(双字).

我想做的是检查这个值,即写一个像这样的表达式x /1wx [eax].

但是,GDB在写[eax]表达式时抱怨说语法错误.

我如何在GDB中使用指针?

Mat*_*her 5

正如另一个答案所指出的那样,你可以通过$ eax查看该特定寄存器.

(gdb) x /1wx $eax
0x400523d <main>:  0xe5894855
Run Code Online (Sandbox Code Playgroud)

'info reg'将提供包含大量有用信息的注册转储.

您还可以在gdb中强制取消引用指针.

(gdb) print /x *(int*)0x400523d
$3 = 0xe5894855
Run Code Online (Sandbox Code Playgroud)

我经常在调试时使用这种方法.在挖掘复杂的类/结构内部时,它非常有用.一连串指针经常被简化,但只是抓住地址并查看解除引用.