第一是从so文件里面查找。导出表以及符号。
另外一种就是 一般会在JNI_OnLoad里面注册 native函数。
native函数定义如下。
typedef struct {
const char* name;
const char* signature;
void* fnPtr;
} JNINativeMethod;
jint RegisterNatives(jclass clazz, const JNINativeMethod* methods,
jint nMethods)
static JNINativeMethod methods[] = {
{"getNativeString", "()Ljava/lang/String;", reinterpret_cast<void*>(getString)}
};
因此只要在JNI_OnLoad里面断点RegisterNatives函数就能得到methods数组。进而从fnptr中得到函数地址~~~