空道 发表于 2014-11-17 17:11:21

<<抛砖引玉>>简单的 JNINativeMethod 参数 打印 脚本 IDC

本帖最后由 空道 于 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脚本

**** Hidden Message *****



AoQc 发表于 2014-11-17 17:39:29

顶楼主啦..希望楼主多发精品好帖啦.....

wanap571 发表于 2014-11-17 18:38:31

大力精品支持

smallhorse 发表于 2014-11-17 19:48:52

膜拜空道大牛,顶起支持

sndncel 发表于 2014-11-17 21:30:01

看看。虽然看不太懂。。。还是顶顶呀。。。。

阳光宅男 发表于 2014-11-17 22:16:12

看不懂额,感谢分享了

wgz001 发表于 2014-11-18 12:48:44

这个只能看下还玩不了

湘灵鼓瑟 发表于 2014-11-18 21:56:47

我就看看啊

www88 发表于 2014-11-21 09:48:58

支持好,我也不懂,进来看看,顶一下

默小坑 发表于 2015-1-7 20:57:33

看看,,也许有用呢。
页: [1] 2 3 4
查看完整版本: <<抛砖引玉>>简单的 JNINativeMethod 参数 打印 脚本 IDC