在frida-trace onEnter中停止函数调用

时间:2016-10-02 10:52:36

标签: ios frida

我正在玩frida,特别是iOS上的frida-trace

当一个方法挂钩并且我可以在onEnter中记录参数时,有没有办法让这个函数尽早调用,而不是调用原始方法?

我尝试将return;添加到onEnter方法,但仍会调用onLeave并调用其中的方法。

1 个答案:

答案 0 :(得分:2)

我有同样的问题,所以问Github,这是oleavr的回答:

  

不,这将要求Interceptor知道函数的调用约定和签名,例如对于stdcall。改为使用Interceptor.replace()。

要了解有关Interceptor.replace()的更多信息,您可以查找official documentation,但正如名称所示,您可以使用自己的实现替换原始函数:

var openPtr = Module.findExportByName("libc.so", "open");
var open = new NativeFunction(openPtr, 'int', ['pointer', 'int']);
Interceptor.replace(openPtr, new NativeCallback(function (pathPtr, flags) {
    var path = Memory.readUtf8String(pathPtr);
    log("Opening '" + path + "'");
    var fd = open(pathPtr, flags);
    log("Got fd: " + fd);
    return fd;
}, 'int', ['pointer', 'int']));

(来自文档的例子。)