【问题标题】:stop function call in frida-trace onEnter在 frida-trace onEnter 中停止函数调用
【发布时间】:2016-10-02 10:52:36
【问题描述】:

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

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

我已经尝试将return; 添加到onEnter 方法中,但是onLeave 仍然被调用并且中间的方法被调用。

【问题讨论】:

    标签: ios frida


    【解决方案1】:

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

    不,这需要 Interceptor 知道函数的调用约定和签名,例如对于标准调用。请改用 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']));
    

    (来自文档的示例。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多