1.找到JNI_OnLoad函数
图片.png图片.png
2.识别成函数
按p
图片.png
图片.png
再按F5
图片.png
图片.png
注:很多时候直接按F5就能直接识别出函数
3.改参数
在Cpp文件中一个完整JNI_OnLoad函数是这样的
图片.png
只需要把关键地方的函数还原就行
1.改JNI_OnLoa函数的参数
图片.png改成
图片.png
按xx.cpp中的JNI_OnLoad函数模型来改
图片.png
2.改GetEnv函数
参照原函数来改
图片.png
第一个参数是vm,在cpp代码里是默认参数不显示
第二个参数是 JNIEnv 类型
第三个参数是 JNI 版本,这个不用改
在IDA里是这样显示
图片.png
先获取类型
图片.png
图片.png
改二个参数类型
图片.png
图片.png
改完后
图片.png
这里把v62赋值v5, 接收的v5类型也改成JNIEnv *
识别成功后,FindClass和RegisterNatives函数也出来了
图片.png
3.改FindClass
图片.png4.改RegisterNatives
图片.png这个参数
图片.png
就是java方法与C的函数对应表
图片.png
4.找到动态注册表
点击 g_methods 函数所在的地址,也就是上一步在IDA里识别到的第三个参数 off_A9094
图片.png
动态注册表就在这里
图片.png
从上到下依次是 函数名,函数参数和返回值类型,函数所在内存地址
图片.png
点击函数地址
图片.png
进入到对应的函数
图片.png
点F5识别成函数
图片.png
网友评论