diff --git a/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/HookerDexMaker.java b/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/HookerDexMaker.java index 722545dc..39507c75 100644 --- a/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/HookerDexMaker.java +++ b/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/HookerDexMaker.java @@ -42,7 +42,10 @@ public class HookerDexMaker { public static final String METHOD_NAME_SETUP = "setup"; public static final TypeId objArrayTypeId = TypeId.get(Object[].class); private static final String CLASS_DESC_PREFIX = "L"; - private static final String CLASS_NAME_PREFIX = "ed_"; + /** + * Note: this identifier is used in native codes to pass class access verification. + */ + private static final String CLASS_NAME_PREFIX = "EdHooker_"; private static final String FIELD_NAME_HOOK_INFO = "additionalHookInfo"; private static final String FIELD_NAME_METHOD = "method"; private static final String PARAMS_FIELD_NAME_METHOD = "method"; diff --git a/Core/jni/main/native_hook/native_hook.cpp b/Core/jni/main/native_hook/native_hook.cpp index d5823c82..efa989a7 100644 --- a/Core/jni/main/native_hook/native_hook.cpp +++ b/Core/jni/main/native_hook/native_hook.cpp @@ -52,8 +52,9 @@ static bool onIsInSamePackageCalled(void *thiz, void *that) { std::string storage1, storage2; const char *thisDesc = (*getDesc)(thiz, &storage1); const char *thatDesc = (*getDesc)(that, &storage2); - if (strstr(thisDesc, "EdHooker") != nullptr - || strstr(thatDesc, "EdHooker") != nullptr + // Note: these identifiers should be consistent with those in Java layer + if (strstr(thisDesc, "EdHooker_") != nullptr + || strstr(thatDesc, "EdHooker_") != nullptr || strstr(thisDesc, "com/elderdrivers/riru/") != nullptr || strstr(thatDesc, "com/elderdrivers/riru/") != nullptr) { return true;