gpt4 book ai didi

c - 内存地址

转载 作者:行者123 更新时间:2023-11-30 20:58:17 25 4
gpt4 key购买 nike

我正在开发《Overthewire narnia2》(ctf 游戏)。目前我正在学习如何使用gdb,我有一个简单的问题。

    (gdb) x/200x $esp-0xac
0xffffd5a4: 0x08048534 0xffffd5c8 0xf7e5b7d0 0xffffd5c8
0xffffd5b4: 0xf7ffd920 0xf7e5b7d5 0x08048494 0x08048534
0xffffd5c4: 0xffffd5c8 0x6850c031 0x68732f2f 0x69622f68
0xffffd5d4: 0x50e3896e 0x89e18953 0xcd0bb0c2 0x41414180
0xffffd5e4: 0x41414141 0x41414141 0x41414141 0x41414141
0xffffd5f4: 0x41414141 0x41414141 0x41414141 0x41414141
0xffffd604: 0x41414141 0x41414141 0x41414141 0x41414141
0xffffd614: 0x41414141 0x41414141 0x41414141 0x41414141
0xffffd624: 0x41414141 0x41414141 0x41414141 0x41414141
0xffffd634: 0x41414141 0x41414141 0x41414141 0x41414141
0xffffd644: 0x41414141 0x62626262 0xf7e2a200 0x00000002
0xffffd654: 0xffffd6e4 0xffffd6f0 0x00000000 0x00000000
0xffffd664: 0x00000000 0xf7fc5000 0xf7ffdc0c 0xf7ffd000
0xffffd674: 0x00000000 0x00000002 0xf7fc5000 0x00000000
0xffffd684: 0x59e07c0a 0x6308501a 0x00000000 0x00000000



(gdb) x/200x $esp

0xffffd7a0: 0x000036b2 0x0000000e 0x000036b2 0x00000017
0xffffd7b0: 0x00000001 0x00000019 0xffffd7eb 0x0000001a
0xffffd7c0: 0x00000000 0x0000001f 0xffffdfe8 0x0000000f
0xffffd7d0: 0xffffd7fb 0x00000000 0x00000000 0x00000000
0xffffd7e0: 0x00000000 0x00000000 0x8b000000 0xb1cfbc04
0xffffd7f0: 0x91563e77 0xcb1ff506 0x6957e20c 0x00363836
0xffffd800: 0x00000000 0x00000000 0x00000000 0x72616e2f
0xffffd810: 0x2f61696e 0x6e72616e 0x00326169 0x41414141
0xffffd820: 0x41414141 0x41414141 0x41414141 0x41414141
0xffffd830: 0x41414141 0x41414141 0x41414141 0x41414141
0xffffd840: 0x41414141 0x41414141 0x41414141 0x41414141
0xffffd850: 0x41414141 0x41414141 0x41414141 0x41414141
0xffffd860: 0x41414141 0x41414141 0x41414141 0x41414141
0xffffd870: 0x41414141 0x41414141 0x41414141 0x41414141
0xffffd880: 0x41414141 0x31414141 0x2f6850c0 0x6868732f
0xffffd890: 0x6e69622f 0x5350e389 0xc289e189 0x80cd0bb0

当我执行 $esp-0xac 时我在看什么?我还见过其他方法,例如 $esp-0x14,但为什么不直接使用 $esp 呢?最常用的是什么?为什么?

最佳答案

what am i looking at when i do $esp-0xac?

$esp 寄存器指向堆栈的已使用部分和未使用部分之间的边界(在内存中)。在 i*86 处理器上,堆栈向较低地址增长,因此上面的任何内容(在较高地址)$esp 都包含堆栈的已用部分(局部变量、返回地址、保存的地址)寄存器等)以及下面的任何内容(位于较低地址)包含当前堆栈的未使用部分。

命令 x/200x $esp-0xac 然后检查当前使用的堆栈的 43 个 32 位字以及堆栈的未使用部分的 157 个字的内容。

ive also seen other methods like $esp-0x14, but why not do plain $esp?

$esp-0x14 可以让您查看堆栈中最后 5 个使用的单词。使用 $esp 可以让您查看堆栈中未使用的部分。您可以这样做,但这有点毫无意义。

what is the most used and why?

当您想要存储某些特定值的位置(例如在漏洞利用/堆栈缓冲区溢出分析期间),或者在机器指令级别进行调试时,检查堆栈非常有用。

关于c - 内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53439365/

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