逆向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中的 函数的 地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容