【发布时间】:2012-03-13 21:26:48
【问题描述】:
我想在汇编中获取函数的返回地址,然后将该返回地址值与另一个值进行比较,而不破坏堆栈或更改堆栈中的任何内容,
如何在汇编中做到这一点?
我正在使用 x86
【问题讨论】:
-
一般情况下你不能。请指定架构、arm、mips、x86 等。这是一个非常特定于编译器的问题。我假设这是您正在编写的 asm 函数等?请在问题中提供更多详细信息。
-
使用x86,有什么好的方法吗?最好的方法是什么?
-
假设返回地址是堆栈上的最后一件事,您可以使用堆栈指针来检查它(假设堆栈指针没有针对堆栈帧进行修改)然后......好吧检查它...您会认为需要使用内联汇编或手动编写函数以避免再次调用。创建的堆栈内容和堆栈帧都是特定于当天代码的编译器,您不能一般地这样做,您必须知道编译器是如何创建该特定函数的。或者更好的是,自己创建函数。