IDA中
so里导出函数 java接口函数
F5里 看C代码 这样的
v8 = (*(int (__fastcall **)(_JNIEnv *, int, int))(*(_DWORD *)v6 + 692))(v6, v5, v4);
v9 = (*(int (__fastcall **)(_JNIEnv *, int, _DWORD))(*(_DWORD *)v6 + 736))(v6, v8, 0);
//v6 + 736 这样的 就是没翻译出来
导入jni.h
选择v6 convert to construct 选择 _JNIEnv 即转换成了
v8 = ((int (__fastcall *)(_JNIEnv *, int, int))v6->functions->GetObjectArrayElement)(v6, v5, v4);
v9 = ((int (__fastcall *)(_JNIEnv *, int, _DWORD))v6->functions->GetByteArrayElements)(v6, v8, 0);
((void (__fastcall *)(_JNIEnv *, int, int, _DWORD))v6->functions->ReleaseByteArrayElements)(v6, v8, v9, 0);
这样的 前面这样乱七八糟的 说明是 硬转换 先hide cast 隐藏硬转换
右键 hide cast
(v6->functions->ReleaseByteArrayElements)(v6, v8, v9, 0);
扫视下 看下 哪个 函数 可疑 跟进去看下
一般跟踪 两层 即可