gpt4 book ai didi

c - 使用 GDB 进行堆栈检查。 x/[n][x] $[reg] 是什么?

转载 作者:行者123 更新时间:2023-11-30 19:10:01 25 4
gpt4 key购买 nike

我对 GDB 以及软件如何在低级别上工作是新手。目前我正在阅读 Jon Erickson 所著的《HACKING the art of expoitation》。我知道什么是堆栈,什么是堆栈指针,基指针等。我可以轻松理解 info stack 命令,但什么是 x/[n][x] $[reg]?书中示例:

0x08048344 <test_function+0>: push ebp  
0x08048345 <test_function+1>: mov ebp,esp
0x08048347 <test_function+3>: sub esp,0x28
0x0804834a <test_function+6>: mov DWORD PTR [ebp-12],0x7a69
0x08048351 <test_function+13>: mov BYTE PTR [ebp-40],0x41
0x08048355 <test_function+17>: leave
0x08048356 <test_function+18>: ret
...
(gdb) x/16xw $esp
0xbffff7c0: 0x00000000 0x08049548 0xbffff7d8 0x08048249
0xbffff7d0: 0xb7f9f729 0xb7fd6ff4 0xbffff808 0x080483b9
0xbffff7e0: 0xb7fd6ff4 0xbffff89c 0xbffff808 0x0804838b
0xbffff7f0: 0x00000001 0x00000002 0x00000003 0x00000004

那是什么?据我所知,这个命令显示了堆栈中存储的最后 16 个 var 地址。
但是0xbffff7c0 0xbffff7d0 0xbffff7ce是什么?怎么读呢?为什么总是有 10 个字节的移位?

请解释一下。

最佳答案

 0xbffff7c0 is memory address
0x00000000 0x08049548 0xbffff7d8 0x08048249 is the content of the 0xbffff7c0 in hexa format

一般情况:

 x/nfu addr 

n, f, and u are all optional parameters that specify how much memory to display and how to format it; addr is an expression giving the address where you want to start displaying memory. If you use defaults for nfu, you need not type the slash `/'. Several commands set convenient defaults for addr.

阅读更多 here

关于c - 使用 GDB 进行堆栈检查。 x/[n][x] $[reg] 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42033049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com