mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-11-27 20:15:29 +00:00
Update jni hooks
This commit is contained in:
parent
b0198dab6c
commit
e8ae103d5f
@ -255,16 +255,14 @@ def gen_jni_hook():
|
|||||||
|
|
||||||
decl += ind(1) + 'auto &class_map = (*jni_method_map)[className];'
|
decl += ind(1) + 'auto &class_map = (*jni_method_map)[className];'
|
||||||
decl += ind(1) + 'for (int i = 0; i < numMethods; ++i) {'
|
decl += ind(1) + 'for (int i = 0; i < numMethods; ++i) {'
|
||||||
decl += ind(2) + 'class_map[methods[i].name][methods[i].signature] = methods[i].fnPtr;'
|
|
||||||
decl += ind(2) + 'if (hook_cnt == 0) continue;'
|
|
||||||
|
|
||||||
for index, methods in enumerate(hook_map.values()):
|
for index, methods in enumerate(hook_map.values()):
|
||||||
decl += ind(2) + f'if (clz_id == {index}) {{'
|
decl += ind(2) + f'if (hook_cnt && clz_id == {index}) {{'
|
||||||
for m in methods:
|
for m in methods:
|
||||||
decl += ind(3) + f'HOOK_JNI({m})'
|
decl += ind(3) + f'HOOK_JNI({m})'
|
||||||
decl += ind(3) + 'continue;'
|
|
||||||
decl += ind(2) + '}'
|
decl += ind(2) + '}'
|
||||||
|
|
||||||
|
decl += ind(2) + 'class_map[methods[i].name][methods[i].signature] = methods[i].fnPtr;'
|
||||||
decl += ind(1) + '}'
|
decl += ind(1) + '}'
|
||||||
|
|
||||||
decl += ind(1) + 'return newMethods;'
|
decl += ind(1) + 'return newMethods;'
|
||||||
|
@ -88,6 +88,7 @@ if (methods[i].name == #method##sv) { \
|
|||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
|
ZLOGE("unknown signature of %s#" #method ": %s\n", className, methods[i].signature); \
|
||||||
continue; \
|
continue; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -303,14 +303,12 @@ unique_ptr<JNINativeMethod[]> hookAndSaveJNIMethods(const char *className, const
|
|||||||
}
|
}
|
||||||
auto &class_map = (*jni_method_map)[className];
|
auto &class_map = (*jni_method_map)[className];
|
||||||
for (int i = 0; i < numMethods; ++i) {
|
for (int i = 0; i < numMethods; ++i) {
|
||||||
class_map[methods[i].name][methods[i].signature] = methods[i].fnPtr;
|
if (hook_cnt && clz_id == 0) {
|
||||||
if (hook_cnt == 0) continue;
|
|
||||||
if (clz_id == 0) {
|
|
||||||
HOOK_JNI(nativeForkAndSpecialize)
|
HOOK_JNI(nativeForkAndSpecialize)
|
||||||
HOOK_JNI(nativeSpecializeAppProcess)
|
HOOK_JNI(nativeSpecializeAppProcess)
|
||||||
HOOK_JNI(nativeForkSystemServer)
|
HOOK_JNI(nativeForkSystemServer)
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
class_map[methods[i].name][methods[i].signature] = methods[i].fnPtr;
|
||||||
}
|
}
|
||||||
return newMethods;
|
return newMethods;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user