本文最后更新于 922 天前,其中的信息可能已经有所发展或是发生改变。
有时候定位到了关键的 native 函数,但是调用方有很多,不知道触发关键行为的时候 是谁调用的这个逻辑,这个时候就需要 frida-trace 来追踪 native 函数的调用了
当追踪的函数有符号时
frida-trace -U com.a.b.c -i "gettimeofday"
//支持 正则匹配 比如
frida-trace -U com.a.b.c -i "gettime*"
frida-trace -U com.a.b.c -i "Java_*"
//只在某个 so 中追踪
frida-trace -U com.a.b.c -i "{target.so}\!gettime*"
//只不在某个 so 中追踪
frida-trace -U com.a.b.c -i "gettime*" -x {exclude.so}
当追踪的函数无符号的时候
/usr/local/bin/frida-trace -U com.a.b.c -a
"{target.so}\!{method_offest_address}"
可以优化 frida-trace 默认生成的 js 逻辑
在生产的 js 文件中,把调用栈打印出来。
var x = Thread.backtrace(this.context, Backtracer.ACCURATE)
.map(DebugSymbol.fromAddress).join('\n') + '\n';
log(x)
模式可以切换为,Backtracer.FUZZY,会更清晰