注册的函数 RegisterNatives
(*env)->RegisterNatives(env, clazz, nativeMethod, jint);
clazz: 调用native方法的java类, 使用FindClass(env, java类)查找;
nativeMethod: c文件中定义的结构体,讲java中的方法名与c做使用的方法名做映射,
类型为JNINativeMethod
jint: nativeMethod中对应的方法个数
JNI_onLoad(JavaVM* vm, void* reserved)函数最后必须放回 版本值
IDA中可通过右键RegisterNatives选择Force call type 显示出具体的实参,从而定位结构参数
jni_all.h文件: https://gist.github.com/Jinmo/048776db75067dcd6c57f1154e65b868
跟踪到nativeMethod时,如果注册了多个方法
每三个DCD 为一个 映射
第一个DCD 是 Java层函数
第二个DCD 是方法签名
第三个DCD 是映射到so中的 函数的 地址