-
-
[求助]android4.2.2的jni加载dex问题
-
发表于: 2014-12-23 17:37 6641
-
测试版本android4.2.2
inject.c 注入 libmyhook.so 成功,
libmyhook.so中的代码:
测试结果错误在[+][+]JavaVM = entry_class NULL
目录权限dexout为777
Entry.apk权限为755
应该没错,我在Android4.0.3下测试成功的。
从错误上看应该是DexClassLoader类的loadClass方法有问题。查不出问题是什么。
希望熟悉的朋友帮个忙!给某解惑!谢谢!
inject.c 注入 libmyhook.so 成功,
libmyhook.so中的代码:
JavaVM* jvm = AndroidRuntime::getJavaVM(); LOGD("[+][+]JavaVM = AndroidRuntime::getJavaVM()\n"); jvm->AttachCurrentThread(&jni_env, NULL); LOGD("[+][+]JavaVM = AttachCurrentThread()\n"); jstring apk_path = jni_env->NewStringUTF( "/data/Entry.apk"); jstring dex_out_path = jni_env->NewStringUTF("/data/dexout"); jclass dexloader_claxx = jni_env->FindClass("dalvik/system/DexClassLoader"); jstring apk_lib_path = jni_env->NewStringUTF("/system/lib"); snprintf(sig_buffer, 512, "(%s%s%s%s)V", JSTRING, JSTRING, JSTRING, JCLASS_LOADER); jmethodID dexloader_init_method = jni_env->GetMethodID(dexloader_claxx, "<init>", sig_buffer); LOGD("[+][+]JavaVM = dexloader_init_method\n"); snprintf(sig_buffer, 512, "(%s)%s", JSTRING, JCLASS); jmethodID loadClass_method = jni_env->GetMethodID(dexloader_claxx, "loadClass", sig_buffer); LOGD("[+][+]JavaVM = loadClass_method\n"); jobject class_loader = getSystemClassLoader(); check_value(class_loader); if (class_loader == NULL) { LOGD("[+][+]JavaVM = getSystemClassLoader NULL\n"); } else { LOGD("[+][+]JavaVM = getSystemClassLoader\n"); } jobject dex_loader_obj = jni_env->NewObject(dexloader_claxx, dexloader_init_method, apk_path, dex_out_path, apk_lib_path, class_loader); if (dex_loader_obj == NULL) { LOGD("[+][+]JavaVM = dex_loader_obj NULL\n"); } else { LOGD("[+][+]JavaVM = dex_loader_obj\n"); } jstring class_name = jni_env->NewStringUTF( "com.example.inject.EntryClass"); jclass entry_class = static_cast<jclass>(jni_env->CallObjectMethod( dex_loader_obj, loadClass_method, class_name)); if (entry_class == NULL) { LOGD("[+][+]JavaVM = entry_class NULL\n"); } else { LOGD("[+][+]JavaVM = entry_class\n"); }
测试结果错误在[+][+]JavaVM = entry_class NULL
目录权限dexout为777
Entry.apk权限为755
应该没错,我在Android4.0.3下测试成功的。
从错误上看应该是DexClassLoader类的loadClass方法有问题。查不出问题是什么。
希望熟悉的朋友帮个忙!给某解惑!谢谢!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
看原图
赞赏
雪币:
留言: