GDB检查命令,目标地址处有多个单元
我正在自己学习《黑客攻击剥削的艺术》第二版,已经遇到了第一组障碍 在GDB中,我可以理解以下代码:GDB检查命令,目标地址处有多个单元,gdb,Gdb,我正在自己学习《黑客攻击剥削的艺术》第二版,已经遇到了第一组障碍 在GDB中,我可以理解以下代码: x/x $rip 将检查寄存器$rip并以十六进制输出 但该代码的作用是: x/2x $rip 这本书说,它正在检查目标地址的多个单元。但这是否意味着它在接下来的2次变化中显示了$rip的价值。或者它意味着什么 哥伦布会说,还有一个问题。调用examine命令后,我得到: 0x100000f00 <main+8> 0x00fc45c7 main+8是什么意思 x/x$rip将检查
x/x $rip
将检查寄存器$rip并以十六进制输出
但该代码的作用是:
x/2x $rip
这本书说,它正在检查目标地址的多个单元。但这是否意味着它在接下来的2次变化中显示了$rip的价值。或者它意味着什么
哥伦布会说,还有一个问题。调用examine命令后,我得到:
0x100000f00 <main+8> 0x00fc45c7
main+8是什么意思
x/x$rip将检查寄存器$rip并以十六进制输出
这是错误的:它将检查$rip指向的内存。如果要检查$rip本身,可以使用print/x$rip
但是这个代码做什么:x/2x$rip
它检查了$rip指向的两个单词的记忆
main+8是什么意思
这意味着您正在查看包含指令的内存,其偏移量为从main开始的8
x/x$rip将检查寄存器$rip并以十六进制输出
这是错误的:它将检查$rip指向的内存。如果要检查$rip本身,可以使用print/x$rip
但是这个代码做什么:x/2x$rip
它检查了$rip指向的两个单词的记忆
main+8是什么意思
这意味着您正在查看包含指令的内存,位于main开头偏移量8处谢谢。我对$rip的唯一理解是它指向处理器正在读取的当前指令。当您说它检查$rip指向的两个单词的内存时,这是否意味着它正在查看当前指令,然后是后面的指令?如果我放x/100x$rip怎么办?这是在看下100条指令吗?@jimbo123这是否意味着它在看当前指令,然后是后面的指令如果每条指令只包含一个字,这是正确的,这在许多RISC处理器上都是正确的,但在x86上却不是。否:您看到的是2个32位字,可以包含多达8条指令。最短的x86指令只有1字节,或者最短的x86指令只有15字节。非常感谢!这也许是一个非常基本的问题,但它帮助我理解书中的其他部分谢谢。我对$rip的唯一理解是它指向处理器正在读取的当前指令。当您说它检查$rip指向的两个单词的内存时,这是否意味着它正在查看当前指令,然后是后面的指令?如果我放x/100x$rip怎么办?这是在看下100条指令吗?@jimbo123这是否意味着它在看当前指令,然后是后面的指令如果每条指令只包含一个字,这是正确的,这在许多RISC处理器上都是正确的,但在x86上却不是。否:您看到的是2个32位字,可以包含多达8条指令。最短的x86指令只有1字节,或者最短的x86指令只有15字节。非常感谢!这可能是一个非常基本的问题,但它有助于我理解本书的其他部分