首页
社区
课程
招聘
[旧帖] [求助]Dex内存加载直接调用defineClassNative的问题 0.00雪花
发表于: 2015-10-30 10:58 2338

[旧帖] [求助]Dex内存加载直接调用defineClassNative的问题 0.00雪花

2015-10-30 10:58
2338
在DEX动态夹在过程中,/libcore/dalvik/src/main/java/dalvik/system/DexFile.java中方法native Class defineClassNative(String name, ClassLoader loader, int cookie)实现对dex的加载
其对应C层dalvik_system_DexFile.cpp中的void Dalvik_dalvik_system_DexFile_defineClass函数:
static void Dalvik_dalvik_system_DexFile_defineClass(const u4* args,
    JValue* pResult)
{
    StringObject* nameObj = (StringObject*) args[0];
    Object* loader = (Object*) args[1];
    int cookie = args[2];
    ……
}

现在我想绕过java层,直接调用层的这个函数。三个参数String name, ClassLoader loader, int cookie传递到jni中之后得到jstring classname, jobject cl, jint cookie,构造参数如下:
struct StringObject *nameObj;
nameObj= (struct StringObject *) strclassname;
struct Object *loaderObj;
loaderObj= (struct Object *) cl;
u4 args[ ] = {strclassname,loaderObj,cookie};

现在不清楚的是数据结构StringObject和Object该如何构造,Android源码/dalvik/vn/oo/Object.h中有这两个结构的定义,但是依赖关系比较复杂,直接拷贝过来不行。希望各位能指点指点

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//