逆向JNI动态注册的方法

注册的函数 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中的 函数的 地址

你可能感兴趣的:(逆向JNI动态注册的方法)