首页
社区
课程
招聘
[求助]android4.2.2的jni加载dex问题
2014-12-23 17:37 6326

[求助]android4.2.2的jni加载dex问题

2014-12-23 17:37
6326
测试版本android4.2.2

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方法有问题。查不出问题是什么。
希望熟悉的朋友帮个忙!给某解惑!谢谢!

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回