- UID
- 75645
注册时间2014-5-13
阅读权限20
最后登录1970-1-1
以武会友
 
该用户从未签到
|
本帖最后由 空道 于 2014-11-17 17:14 编辑
在逆向的时候经常会碰到 在so的JNI_OnLoad 方法中使用 RegisterNatives 函数去 动态注册JNI方法,
如果注册的函数少还可以手动去看下, 一但多了之后就会变的很蛋疼, 所以写了这个简单脚本,
Jni动态注册原代码如下:
// Java和JNI函数的绑定表
static JNINativeMethod method_table[] = {
{ "getExtraData", "(Ljava/lang/String;)Ljava/lang/String;", (void*)native_getExtraData },
{ "getKeyType", "(Ljava/lang/String;)I", (void*)native_getkey},
{ "getAppKeyByIndex", "(I)Ljava/lang/String;", (void*)native_getAppKeyByIndex}
};
// 注册native方法到java中
static int registerNativeMethods(JNIEnv* env, const char* className,
JNINativeMethod* gMethods, int numMethods)
{
jclass clazz;
clazz = (*env)->FindClass(env, className);
if (clazz == NULL) {
return JNI_FALSE;
}
if ((*env)->RegisterNatives(env, clazz, gMethods, numMethods) < 0) {
return JNI_FALSE;
}
return JNI_TRUE;
}
然后我们使用 IDA 动态调试到 RegisterNatives 函数 执行 idc脚本
|
|