Fix dex loading while obfuscation is disabled

This commit is contained in:
kotori2 2022-02-08 03:48:18 +08:00 committed by LoveSy
parent 4ffea2a367
commit 55469abc8d
1 changed files with 10 additions and 11 deletions

View File

@ -155,11 +155,6 @@ Java_org_lsposed_lspd_service_ObfuscationManager_preloadDex(JNIEnv *env, jclass
LOGD("Loaded %s with size %zu", dex_path.data(), size);
if (!obfuscate_enabled(env, obfuscation_manager)) {
lspdDex = fileno(f.get());
return lspdDex;
}
auto *addr = mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fileno(f.get()), 0);
if (addr == MAP_FAILED) {
@ -167,7 +162,16 @@ Java_org_lsposed_lspd_service_ObfuscationManager_preloadDex(JNIEnv *env, jclass
return -1;
}
auto new_dex = obfuscateDex(addr, size);
int new_dex;
if (!obfuscate_enabled(env, obfuscation_manager)) {
new_dex = ASharedMemory_create("", size);
auto new_addr = mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_SHARED, new_dex, 0);
memcpy(new_addr, addr, size);
munmap(new_addr, size);
} else {
new_dex = obfuscateDex(addr, size);
}
munmap(addr, size);
LOGD("LSPApplicationService::preloadDex: %d, size=%zu", new_dex, ASharedMemory_getSize(new_dex));
lspdDex = new_dex;
@ -178,11 +182,6 @@ extern "C"
JNIEXPORT jlong JNICALL
Java_org_lsposed_lspd_service_ObfuscationManager_getPreloadedDexSize(JNIEnv *env, jclass obfuscation_manager) {
if (lspdDex != -1) {
if (!obfuscate_enabled(env, obfuscation_manager)) {
auto size = lseek(lspdDex, 0, SEEK_END);
lseek(lspdDex, 0, SEEK_SET);
return size;
}
return ASharedMemory_getSize(lspdDex);
}
return 0;