如何在装配中做相对跳跃?

时间:2014-09-20 15:19:02

标签: assembly x86 stack-overflow

我跟随Aleph One's awesome introduction to smashing the stack,但我已经卡住了他所拥有的一个示例程序。问题在于,当我编译行jmp 0x2a并对其进行反汇编时,会产生该确切的行,而在aleph的代码中,它被转换为jmp 0x800015f <main+47>。我如何强制gcc使其成为相对跳跃而不是绝对跳跃(这是我认为正在进行的)。

1 个答案:

答案 0 :(得分:1)

问题是0x2a。这看起来像一个绝对的地址,但你想要的是一个相对地址。

这可以通过标记目的地并跳转到那个来实现:汇编程序更喜欢在大多数时间生成相对跳转。或者使用相对地址。大多数汇编程序接受类似于.+0x2a的内容,其中.是一个符号,表示当前指令指针。有些人使用$代替。

相关问题