此版本带来了几项改进:
-
Interceptor现在与 iOS/ARM 上更多的函数兼容。 - 新的 CLI 工具
frida-repl提供一个基础 REPL,便于你从目标进程内部 试验 JavaScript API。 - 传给
Interceptor.attach()的onLeave回调现可通过调用retval.replace()替换返回值。 - 传给
Interceptor.attach()的onEnter和onLeave回调都可以访问this.errno(UNIX)或this.lastError(Windows),以检查或操作当前线程 最后一个系统错误。
下面演示如何组合后三项功能,为 Mac 上运行的特定进程模拟网络状况:
~ $ frida-repl TargetApp然后粘贴:
callbacks = { \
onEnter(args) { \
args[0] = ptr(-1); // Avoid side-effects on socket \
}, \
onLeave(retval) { \
const ECONNREFUSED = 61; \
this.errno = ECONNREFUSED; \
retval.replace(-1); \
} \
}; \
Module.enumerateExports("libsystem_kernel.dylib", { \
onMatch(exp) { \
if (exp.name.indexOf("connect") === 0 && exp.name.indexOf("connectx") !== 0) { \
Interceptor.attach(exp.address, callbacks); \
} \
}, \
onComplete() {} \
});尽情享用!
oleavr