hook函数中如何知道上一级函数地址或函数返回地址

各位大大,项目中需要HOOK了dladdr之类的系统函数,我需要根据调用dladdr的父函数及相关参数来决策hook中的程序逻辑。请问下,在hook dladdr的代码中,如何知道调用的父函数或者当前hook_dladdr的返回地址?

各种框架应该都支持获取返回地址吧(判断调用函数是否在特定范围里会用到)。比如frida直接在this里面放着

谢谢你的回复,我用 Cydia Substrate写tweak脚本,这里面怎么能得到调用信息喃。

现在用了一个比较笨的办法,用[NSThread callStackSymbols]获取线程的调用栈,然后再将调用栈的结果和父函数的地址比较。请各位大大指导下更好的办法。

C层好像也有获取堆栈的函数

__builtin_return_address

1 个赞