我试图理解为什么 gdb 以 10[hex] 为增量显示内存地址。 我已经用
-m32 -z execstack -fno-stack-protector
标志编译了我的 C 程序并关闭了 ASLR。
当我尝试查询下一个地址时,它似乎循环通过字节
我无法理解 gdb 的这种行为。
此外,如果我在我的c程序中创建一个
char buf[n]
大小的n
,我在调试时无法准确计算buf使用的空间,我想知道循环效果是如何发挥作用的。
我认为你对little-endian(32位整数)感到困惑:
在内存中前8个字节是
0x54ffffc5 -> c5 ff ff 54
0x54ffffc5 -> c5 ff ff 54
所以如果你在内存中步进一个字节,你会发现
<skip first byte> ff ff 54 c5 ff ff 54 ...
所以你看到了(作为 32 位整数)
ff ff 54 c5 -> 0xc554ffff