如何在push + ret方法中传递参数?

时间:2017-04-16 18:31:17

标签: assembly call

如果我使用call

push b
push a
call address

有效,但使用call会让我对地址感到困惑 所以我想使用push + ret这样的方法:

push b
push a
push address
ret

但这一次,通过论证看起来不正常 如何使用此方法传递地址?

1 个答案:

答案 0 :(得分:4)

call address

这个近乎通话的指令做了两件事:

  • 它将返回地址放在堆栈上,该地址是call address指令本身后面的内存地址。
  • 通过更改EIP寄存器,将控制权转移到地址的代码。

您的替换代码执行后一项操作。

要更正代码,请手动按下返回地址:

    push b
    push a
    push Back
    push address
    ret
Back:

这次你会看到传递参数的方式是一样的。

使用这种替代方法,完全可以将 Back:标签放在您喜欢的地方以及有意义的地方!