打开IDA,加载对应so文件:

点击jni函数,右边窗口会显示汇报片段形式的逻辑跳转框图:

按F5转成C代码:

导入头文件可让IDA了解相关数据结构:
引入JNI 头文件:
cd /Users/XXX/Library/Android/sdk/ndk/26.1.10909125
find . -name jni.h
cp ./toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/jni.h ~/files/

导入成功后,将已知类型的参数做类型转换,比如上面函数中的参数:a1:JNIEnv*, a2:jclass, a3:jstring

转换完成之后:

接下来就可以按代码进行分析了,比如上面这个跟踪j_j_lock_file_unblock()函数,一直索引到最终函数实现,了解其逻辑内容。