From 53d0dbd12070c07ac33d1819cfa81f256cea8eba Mon Sep 17 00:00:00 2001 From: solohsu Date: Tue, 19 Mar 2019 02:12:56 +0800 Subject: [PATCH] Refactor project structure --- Bridge/build.gradle | 132 ------------------ README.md | 7 +- build.gradle | 2 +- {Core => edxp-core}/.gitignore | 0 {Core => edxp-core}/build-module.sh | 0 {Core => edxp-core}/build.gradle | 16 ++- {Core => edxp-core}/jni/.gitattributes | 0 {Core => edxp-core}/jni/Android.mk | 0 {Core => edxp-core}/jni/Application.mk | 0 {Core => edxp-core}/jni/external/Android.mk | 0 .../jni/external/include/xhook/xhook.h | 0 .../jni/external/xhook/queue.h | 0 {Core => edxp-core}/jni/external/xhook/tree.h | 0 .../jni/external/xhook/xh_core.c | 0 .../jni/external/xhook/xh_core.h | 0 .../jni/external/xhook/xh_elf.c | 0 .../jni/external/xhook/xh_elf.h | 0 .../jni/external/xhook/xh_errno.h | 0 .../jni/external/xhook/xh_jni.c | 0 .../jni/external/xhook/xh_log.c | 0 .../jni/external/xhook/xh_log.h | 0 .../jni/external/xhook/xh_util.c | 0 .../jni/external/xhook/xh_util.h | 0 .../jni/external/xhook/xh_version.c | 0 .../jni/external/xhook/xh_version.h | 0 .../jni/external/xhook/xhook.c | 0 .../jni/external/xhook/xhook.h | 0 {Core => edxp-core}/jni/main/Android.mk | 0 .../jni/main/include/JNIHelper.h | 0 .../jni/main/include/android_build.h | 0 {Core => edxp-core}/jni/main/include/config.h | 0 .../jni/main/include/fd_utils-inl.h | 0 .../jni/main/include/logging.h | 0 {Core => edxp-core}/jni/main/include/misc.cpp | 0 {Core => edxp-core}/jni/main/include/misc.h | 0 {Core => edxp-core}/jni/main/include/riru.c | 0 {Core => edxp-core}/jni/main/include/riru.h | 0 .../jni/main/inject/config_manager.cpp | 0 .../jni/main/inject/config_manager.h | 0 .../jni/main/inject/framework_hook.cpp | 0 .../jni/main/inject/framework_hook.h | 0 .../jni/main/java_hook/java_hook.cpp | 0 .../jni/main/java_hook/java_hook.h | 0 {Core => edxp-core}/jni/main/main.cpp | 0 .../jni/main/native_hook/native_hook.cpp | 0 .../jni/main/native_hook/native_hook.h | 0 .../jni/main/native_hook/riru_hook.cpp | 0 .../jni/main/native_hook/riru_hook.h | 0 {Core => edxp-core}/jni/main/yahfa/HookMain.c | 0 {Core => edxp-core}/jni/main/yahfa/HookMain.h | 0 {Core => edxp-core}/jni/main/yahfa/common.h | 0 {Core => edxp-core}/jni/main/yahfa/env.h | 0 .../jni/main/yahfa/trampoline.c | 0 .../jni/main/yahfa/trampoline.h | 0 .../src/main/AndroidManifest.xml | 0 .../META-INF/com/google/android/update-binary | 0 .../com/google/android/updater-script | 0 .../template_override/common/post-fs-data.sh | 0 .../template_override/common/service.sh | 0 .../template_override/common/system.prop | 0 .../common/util_functions.sh | 0 .../template_override/config.sh | 0 .../template_override/module.prop | 0 .../template_override/riru_module.prop | 0 .../system/framework/edconfig.jar | 0 .../system/framework/eddalvikdx.jar | Bin .../system/framework/eddexmaker.jar | Bin .../template_override/system/lib/libwhale.so | Bin .../system/lib64/libwhale.so | Bin .../system_x86/lib/libwhale.so | Bin .../system_x86/lib64/libwhale.so | Bin {Bridge => edxp-yahfa}/.gitignore | 0 edxp-yahfa/build.gradle | 61 ++++++++ .../libs/framework-stub.jar | Bin {Bridge => edxp-yahfa}/proguard-rules.pro | 0 edxp-yahfa/src/main/AndroidManifest.xml | 1 + .../com/elderdrivers/riru/common/KeepAll.java | 0 .../elderdrivers/riru/common/KeepMembers.java | 0 .../riru/edxp/config/ConfigManager.java | 0 .../riru/edxp/config/InstallerChooser.java | 0 .../riru/edxp/util/ClassLoaderUtils.java | 3 +- .../elderdrivers/riru/edxp/util/DexUtils.java | 0 .../riru/edxp/util/FileUtils.java | 0 .../riru/edxp/util/InlinedMethodCallers.java | 0 .../edxp/util/PrebuiltMethodsDeopter.java | 0 .../riru/edxp/util/ProcessUtils.java | 0 .../elderdrivers/riru/edxp/util/Utils.java | 0 .../elderdrivers/riru/edxp/yahfa/Main.java | 2 + .../edxp/yahfa/config/YahfaEdxpConfig.java | 23 +++ .../edxp/yahfa/config/YahfaHookProvider.java | 33 +++++ .../riru/edxp/yahfa/core/HookMain.java | 0 .../edxp/yahfa/core/HookMethodResolver.java | 0 .../riru/edxp/yahfa/dexmaker/DexLog.java | 0 .../edxp/yahfa/dexmaker/DexMakerUtils.java | 16 +++ .../edxp/yahfa/dexmaker/DynamicBridge.java | 0 .../edxp/yahfa/dexmaker/HookerDexMaker.java | 0 .../riru/edxp/yahfa/dexmaker/MethodInfo.java | 0 .../riru/edxp/yahfa/entry/Router.java | 30 +++- .../entry/bootstrap/AppBootstrapHookInfo.java | 0 .../entry/bootstrap/SysBootstrapHookInfo.java | 0 .../entry/bootstrap/SysInnerHookInfo.java | 0 .../entry/bootstrap/WorkAroundHookInfo.java | 0 .../entry/hooker/HandleBindAppHooker.java | 34 +++-- .../hooker/LoadedApkConstructorHooker.java | 28 ++-- .../entry/hooker/OnePlusWorkAroundHooker.java | 6 +- .../hooker/StartBootstrapServicesHooker.java | 8 +- .../yahfa/entry/hooker/SystemMainHooker.java | 9 +- .../entry/hooker/XposedBlackListHooker.java | 4 +- .../entry/hooker/XposedInstallerHooker.java | 18 +-- .../edxp/yahfa/proxy/BlackWhiteListProxy.java | 0 .../riru/edxp/yahfa/proxy/NormalProxy.java | 0 gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 0 .../.gitignore | 0 .../build.gradle | 0 .../src/main/AndroidManifest.xml | 0 .../main/java/android/app/ActivityThread.java | 0 .../src/main/java/android/app/LoadedApk.java | 0 .../android/content/pm/PackageParser.java | 0 .../android/content/res/AssetManager.java | 0 .../content/res/CompatibilityInfo.java | 0 .../java/android/content/res/Resources.java | 0 .../java/android/content/res/TypedArray.java | 0 .../src/main/java/android/os/SELinux.java | 0 .../main/java/android/os/ServiceManager.java | 0 .../com/android/internal/os/RuntimeInit.java | 0 .../com/android/internal/os/ZygoteInit.java | 0 .../com/android/internal/util/XmlUtils.java | 0 .../dalvik/system/BaseDexClassLoader.java | 0 .../xposed/dummy/XResourcesSuperClass.java | 0 .../xposed/dummy/XTypedArraySuperClass.java | 0 settings.gradle | 2 +- xposed-bridge/.gitignore | 1 + xposed-bridge/build.gradle | 54 +++++++ xposed-bridge/libs/framework-stub.jar | Bin 0 -> 15295 bytes xposed-bridge/proguard-rules.pro | 25 ++++ .../src/main/AndroidManifest.xml | 0 .../src/main/apacheCommonsLang/LICENSE.txt | 0 .../main/apacheCommonsLang/MODIFICATIONS.txt | 0 .../src/main/apacheCommonsLang/NOTICE.txt | 0 .../main/apacheCommonsLang/RELEASE-NOTES.txt | 0 .../org/apache/commons/lang3/ArrayUtils.java | 0 .../commons/lang3/CharSequenceUtils.java | 0 .../org/apache/commons/lang3/CharUtils.java | 0 .../org/apache/commons/lang3/ClassUtils.java | 0 .../org/apache/commons/lang3/JavaVersion.java | 0 .../org/apache/commons/lang3/ObjectUtils.java | 0 .../org/apache/commons/lang3/StringUtils.java | 0 .../org/apache/commons/lang3/SystemUtils.java | 0 .../org/apache/commons/lang3/Validate.java | 0 .../apache/commons/lang3/builder/Builder.java | 0 .../lang3/builder/CompareToBuilder.java | 0 .../commons/lang3/builder/EqualsBuilder.java | 0 .../lang3/builder/HashCodeBuilder.java | 0 .../apache/commons/lang3/builder/IDKey.java | 0 .../builder/ReflectionToStringBuilder.java | 0 .../lang3/builder/ToStringBuilder.java | 0 .../commons/lang3/builder/ToStringStyle.java | 0 .../apache/commons/lang3/builder/package.html | 0 .../lang3/exception/CloneFailedException.java | 0 .../commons/lang3/exception/package.html | 0 .../apache/commons/lang3/mutable/Mutable.java | 0 .../commons/lang3/mutable/MutableInt.java | 0 .../apache/commons/lang3/mutable/package.html | 0 .../org/apache/commons/lang3/overview.html | 0 .../org/apache/commons/lang3/package.html | 0 .../commons/lang3/reflect/MemberUtils.java | 0 .../commons/lang3/reflect/MethodUtils.java | 0 .../apache/commons/lang3/reflect/package.html | 0 .../commons/lang3/tuple/ImmutablePair.java | 0 .../org/apache/commons/lang3/tuple/Pair.java | 0 .../apache/commons/lang3/tuple/package.html | 0 .../java/android/app/AndroidAppHelper.java | 0 .../main/java/android/app/package-info.java | 0 .../android/content/res/XModuleResources.java | 0 .../android/content/res/XResForwarder.java | 0 .../java/android/content/res/XResources.java | 0 .../android/content/res/package-info.java | 0 .../riru/edxp/config/EdXpConfig.java | 12 ++ .../riru/edxp/config/EdXpConfigGlobal.java | 72 ++++++++++ .../riru/edxp/hook/HookProvider.java | 17 +++ .../de/robv/android/xposed/DexCreator.java | 0 .../android/xposed/IXposedHookCmdInit.java | 0 .../IXposedHookInitPackageResources.java | 0 .../xposed/IXposedHookLoadPackage.java | 0 .../android/xposed/IXposedHookZygoteInit.java | 0 .../de/robv/android/xposed/IXposedMod.java | 0 .../de/robv/android/xposed/SELinuxHelper.java | 0 .../de/robv/android/xposed/XC_MethodHook.java | 0 .../android/xposed/XC_MethodReplacement.java | 0 .../android/xposed/XSharedPreferences.java | 0 .../de/robv/android/xposed/XposedBridge.java | 18 +-- .../de/robv/android/xposed/XposedHelpers.java | 0 .../de/robv/android/xposed/XposedInit.java | 33 +---- .../android/xposed/callbacks/IXUnhook.java | 0 .../callbacks/XC_InitPackageResources.java | 0 .../xposed/callbacks/XC_LayoutInflated.java | 0 .../xposed/callbacks/XC_LoadPackage.java | 0 .../android/xposed/callbacks/XCallback.java | 4 +- .../xposed/callbacks/package-info.java | 0 .../de/robv/android/xposed/package-info.java | 0 .../android/xposed/services/BaseService.java | 0 .../xposed/services/BinderService.java | 0 .../xposed/services/DirectAccessService.java | 0 .../android/xposed/services/FileResult.java | 0 .../xposed/services/ZygoteService.java | 0 .../android/xposed/services/package-info.java | 0 207 files changed, 423 insertions(+), 250 deletions(-) delete mode 100644 Bridge/build.gradle rename {Core => edxp-core}/.gitignore (100%) rename {Core => edxp-core}/build-module.sh (100%) rename {Core => edxp-core}/build.gradle (80%) rename {Core => edxp-core}/jni/.gitattributes (100%) rename {Core => edxp-core}/jni/Android.mk (100%) rename {Core => edxp-core}/jni/Application.mk (100%) rename {Core => edxp-core}/jni/external/Android.mk (100%) rename {Core => edxp-core}/jni/external/include/xhook/xhook.h (100%) rename {Core => edxp-core}/jni/external/xhook/queue.h (100%) rename {Core => edxp-core}/jni/external/xhook/tree.h (100%) rename {Core => edxp-core}/jni/external/xhook/xh_core.c (100%) rename {Core => edxp-core}/jni/external/xhook/xh_core.h (100%) rename {Core => edxp-core}/jni/external/xhook/xh_elf.c (100%) rename {Core => edxp-core}/jni/external/xhook/xh_elf.h (100%) rename {Core => edxp-core}/jni/external/xhook/xh_errno.h (100%) rename {Core => edxp-core}/jni/external/xhook/xh_jni.c (100%) rename {Core => edxp-core}/jni/external/xhook/xh_log.c (100%) rename {Core => edxp-core}/jni/external/xhook/xh_log.h (100%) rename {Core => edxp-core}/jni/external/xhook/xh_util.c (100%) rename {Core => edxp-core}/jni/external/xhook/xh_util.h (100%) rename {Core => edxp-core}/jni/external/xhook/xh_version.c (100%) rename {Core => edxp-core}/jni/external/xhook/xh_version.h (100%) rename {Core => edxp-core}/jni/external/xhook/xhook.c (100%) rename {Core => edxp-core}/jni/external/xhook/xhook.h (100%) rename {Core => edxp-core}/jni/main/Android.mk (100%) rename {Core => edxp-core}/jni/main/include/JNIHelper.h (100%) rename {Core => edxp-core}/jni/main/include/android_build.h (100%) rename {Core => edxp-core}/jni/main/include/config.h (100%) rename {Core => edxp-core}/jni/main/include/fd_utils-inl.h (100%) rename {Core => edxp-core}/jni/main/include/logging.h (100%) rename {Core => edxp-core}/jni/main/include/misc.cpp (100%) rename {Core => edxp-core}/jni/main/include/misc.h (100%) rename {Core => edxp-core}/jni/main/include/riru.c (100%) rename {Core => edxp-core}/jni/main/include/riru.h (100%) rename {Core => edxp-core}/jni/main/inject/config_manager.cpp (100%) rename {Core => edxp-core}/jni/main/inject/config_manager.h (100%) rename {Core => edxp-core}/jni/main/inject/framework_hook.cpp (100%) rename {Core => edxp-core}/jni/main/inject/framework_hook.h (100%) rename {Core => edxp-core}/jni/main/java_hook/java_hook.cpp (100%) rename {Core => edxp-core}/jni/main/java_hook/java_hook.h (100%) rename {Core => edxp-core}/jni/main/main.cpp (100%) rename {Core => edxp-core}/jni/main/native_hook/native_hook.cpp (100%) rename {Core => edxp-core}/jni/main/native_hook/native_hook.h (100%) rename {Core => edxp-core}/jni/main/native_hook/riru_hook.cpp (100%) rename {Core => edxp-core}/jni/main/native_hook/riru_hook.h (100%) rename {Core => edxp-core}/jni/main/yahfa/HookMain.c (100%) rename {Core => edxp-core}/jni/main/yahfa/HookMain.h (100%) rename {Core => edxp-core}/jni/main/yahfa/common.h (100%) rename {Core => edxp-core}/jni/main/yahfa/env.h (100%) rename {Core => edxp-core}/jni/main/yahfa/trampoline.c (100%) rename {Core => edxp-core}/jni/main/yahfa/trampoline.h (100%) rename {Core => edxp-core}/src/main/AndroidManifest.xml (100%) rename {Core => edxp-core}/template_override/META-INF/com/google/android/update-binary (100%) rename {Core => edxp-core}/template_override/META-INF/com/google/android/updater-script (100%) rename {Core => edxp-core}/template_override/common/post-fs-data.sh (100%) rename {Core => edxp-core}/template_override/common/service.sh (100%) rename {Core => edxp-core}/template_override/common/system.prop (100%) rename {Core => edxp-core}/template_override/common/util_functions.sh (100%) rename {Core => edxp-core}/template_override/config.sh (100%) rename {Core => edxp-core}/template_override/module.prop (100%) rename {Core => edxp-core}/template_override/riru_module.prop (100%) rename {Core => edxp-core}/template_override/system/framework/edconfig.jar (100%) rename {Core => edxp-core}/template_override/system/framework/eddalvikdx.jar (100%) rename {Core => edxp-core}/template_override/system/framework/eddexmaker.jar (100%) rename {Core => edxp-core}/template_override/system/lib/libwhale.so (100%) rename {Core => edxp-core}/template_override/system/lib64/libwhale.so (100%) rename {Core => edxp-core}/template_override/system_x86/lib/libwhale.so (100%) rename {Core => edxp-core}/template_override/system_x86/lib64/libwhale.so (100%) rename {Bridge => edxp-yahfa}/.gitignore (100%) create mode 100644 edxp-yahfa/build.gradle rename {Bridge => edxp-yahfa}/libs/framework-stub.jar (100%) rename {Bridge => edxp-yahfa}/proguard-rules.pro (100%) create mode 100644 edxp-yahfa/src/main/AndroidManifest.xml rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/common/KeepAll.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/common/KeepMembers.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/config/ConfigManager.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/config/InstallerChooser.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/util/ClassLoaderUtils.java (96%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/util/DexUtils.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/util/FileUtils.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/util/InlinedMethodCallers.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/util/PrebuiltMethodsDeopter.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/util/ProcessUtils.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/util/Utils.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/Main.java (98%) create mode 100644 edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaEdxpConfig.java create mode 100644 edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaHookProvider.java rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/core/HookMain.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/core/HookMethodResolver.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DexLog.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DexMakerUtils.java (94%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DynamicBridge.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/HookerDexMaker.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/MethodInfo.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/Router.java (74%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/AppBootstrapHookInfo.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/SysBootstrapHookInfo.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/SysInnerHookInfo.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/WorkAroundHookInfo.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/HandleBindAppHooker.java (73%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/LoadedApkConstructorHooker.java (77%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/OnePlusWorkAroundHooker.java (93%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/StartBootstrapServicesHooker.java (91%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/SystemMainHooker.java (85%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/XposedBlackListHooker.java (94%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/XposedInstallerHooker.java (76%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/BlackWhiteListProxy.java (100%) rename {Bridge => edxp-yahfa}/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/NormalProxy.java (100%) mode change 100644 => 100755 gradlew rename {hiddenapistubs => hiddenapi-stubs}/.gitignore (100%) rename {hiddenapistubs => hiddenapi-stubs}/build.gradle (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/AndroidManifest.xml (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/java/android/app/ActivityThread.java (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/java/android/app/LoadedApk.java (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/java/android/content/pm/PackageParser.java (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/java/android/content/res/AssetManager.java (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/java/android/content/res/CompatibilityInfo.java (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/java/android/content/res/Resources.java (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/java/android/content/res/TypedArray.java (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/java/android/os/SELinux.java (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/java/android/os/ServiceManager.java (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/java/com/android/internal/os/RuntimeInit.java (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/java/com/android/internal/os/ZygoteInit.java (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/java/com/android/internal/util/XmlUtils.java (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/java/dalvik/system/BaseDexClassLoader.java (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/java/xposed/dummy/XResourcesSuperClass.java (100%) rename {hiddenapistubs => hiddenapi-stubs}/src/main/java/xposed/dummy/XTypedArraySuperClass.java (100%) create mode 100644 xposed-bridge/.gitignore create mode 100644 xposed-bridge/build.gradle create mode 100644 xposed-bridge/libs/framework-stub.jar create mode 100644 xposed-bridge/proguard-rules.pro rename {Bridge => xposed-bridge}/src/main/AndroidManifest.xml (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/LICENSE.txt (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/MODIFICATIONS.txt (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/NOTICE.txt (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/RELEASE-NOTES.txt (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/ArrayUtils.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/CharSequenceUtils.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/CharUtils.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/ClassUtils.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/JavaVersion.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/ObjectUtils.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/StringUtils.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/SystemUtils.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/Validate.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/Builder.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/CompareToBuilder.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/EqualsBuilder.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/HashCodeBuilder.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/IDKey.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/ToStringBuilder.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/ToStringStyle.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/package.html (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/exception/CloneFailedException.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/exception/package.html (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/mutable/Mutable.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/mutable/MutableInt.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/mutable/package.html (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/overview.html (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/package.html (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/reflect/MemberUtils.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/reflect/MethodUtils.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/reflect/package.html (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/tuple/ImmutablePair.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/tuple/Pair.java (100%) rename {Bridge => xposed-bridge}/src/main/apacheCommonsLang/external/org/apache/commons/lang3/tuple/package.html (100%) rename {Bridge => xposed-bridge}/src/main/java/android/app/AndroidAppHelper.java (100%) rename {Bridge => xposed-bridge}/src/main/java/android/app/package-info.java (100%) rename {Bridge => xposed-bridge}/src/main/java/android/content/res/XModuleResources.java (100%) rename {Bridge => xposed-bridge}/src/main/java/android/content/res/XResForwarder.java (100%) rename {Bridge => xposed-bridge}/src/main/java/android/content/res/XResources.java (100%) rename {Bridge => xposed-bridge}/src/main/java/android/content/res/package-info.java (100%) create mode 100644 xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfig.java create mode 100644 xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfigGlobal.java create mode 100644 xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/DexCreator.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/IXposedHookCmdInit.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/IXposedHookInitPackageResources.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/IXposedHookLoadPackage.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/IXposedHookZygoteInit.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/IXposedMod.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/SELinuxHelper.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/XC_MethodHook.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/XC_MethodReplacement.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/XSharedPreferences.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/XposedBridge.java (95%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/XposedHelpers.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/XposedInit.java (87%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/callbacks/IXUnhook.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/callbacks/XC_InitPackageResources.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/callbacks/XC_LayoutInflated.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/callbacks/XC_LoadPackage.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/callbacks/XCallback.java (96%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/callbacks/package-info.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/package-info.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/services/BaseService.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/services/BinderService.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/services/DirectAccessService.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/services/FileResult.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/services/ZygoteService.java (100%) rename {Bridge => xposed-bridge}/src/main/java/de/robv/android/xposed/services/package-info.java (100%) diff --git a/Bridge/build.gradle b/Bridge/build.gradle deleted file mode 100644 index d223e8bc..00000000 --- a/Bridge/build.gradle +++ /dev/null @@ -1,132 +0,0 @@ -import groovy.xml.XmlUtil - -apply plugin: 'com.android.application' - -gradle.projectsEvaluated { - tasks.withType(JavaCompile) { - options.compilerArgs.add('-Xbootclasspath/p:libs/framework-stub.jar') - } -} - -android { - compileSdkVersion 28 - buildToolsVersion '28.0.3' - - defaultConfig { - multiDexEnabled false - minSdkVersion 23 - } - - sourceSets { - main { - java.srcDirs += ['src/main/apacheCommonsLang'] - jniLibs.srcDirs = ['libs'] - } - } - - buildTypes { - release { - minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } - - // Only build the release variant -// variantFilter { variant -> -// if (variant.buildType.name != BuilderConstants.DEBUG) { -// variant.ignore = true -// } -// } -} - -task generateStubs(type: Javadoc, dependsOn: 'compileReleaseSources') { - source = file('src/main/java') - ext.stubsDir = "$buildDir/api/stub-sources" - outputs.dir ext.stubsDir - title = null - - options { - doclet = 'com.google.doclava.Doclava' - docletpath = fileTree(dir: 'doclib', include: '**/*.jar').asType(List) - jFlags '-Dignore.symbol.file' - addBooleanOption 'nodocs', true - addFileOption 'stubs', file(ext.stubsDir) - addFileOption 'api', file('doclib/api/current.txt') - addBooleanOption 'hide 111', true - addBooleanOption 'hide 113', true - addBooleanOption 'hidePackage xposed.dummy', true - } -} - -task compileStubs(type: JavaCompile, dependsOn: 'generateStubs') { - source = fileTree(generateStubs.ext.stubsDir) - destinationDir = file("$buildDir/api/stub-classes") - options.compilerArgs += '-XDsuppressNotes' -} - -task jarStubs(type: Jar) { - from compileStubs - destinationDir = file("$buildDir/api") - baseName = 'api' -} - -task jarStubsSource(type: Jar) { - from generateStubs.source - destinationDir = jarStubs.destinationDir - baseName = jarStubs.baseName - classifier = 'sources' -} - -task generateAPI(dependsOn: ['generateStubs', 'jarStubs', 'jarStubsSource']) - -// Make sure that hiddenapistubs are placed before the Android SDK in app.iml -// as there doesn't seem to be any way to configure this in Android Studio. -task fixIml { - ext.imlFile = projectDir.absolutePath + '/' + project.name + '.iml' - inputs.file imlFile - outputs.file imlFile - - println imlFile - doLast { - def imlFile = file(project.name + ".iml") - println 'Change ' + project.name + '.iml order' - try { - def parsedXml = (new XmlParser()).parse(imlFile) - def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' } - parsedXml.component[1].remove(jdkNode) - def sdkString = "Android API " + android.compileSdkVersion.substring("android-".length()) + " Platform" - new Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK']) - XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile)) - } catch (FileNotFoundException e) { - // nop, iml not found - } - } -} - -tasks.preBuild.dependsOn fixIml - -dependencies { - compileOnly files("libs/framework-stub.jar") - compileOnly project(':dexmaker') -} - -afterEvaluate { - - task javac - - tasks.withType(JavaCompile) { - options.compilerArgs.add('-Xbootclasspath/p:libs/framework-stub.jar') - } - - android.applicationVariants.all { variant -> - def nameCapped = variant.name.capitalize() - def nameLowered = variant.name.toLowerCase() - - def makeAndCopyTask = task("makeAndCopy${nameCapped}", type: Jar, dependsOn: "assemble${nameCapped}") { - from "build/intermediates/transforms/dexMerger/${nameLowered}/0/" - destinationDir file("../Core/template_override/system/framework/") - baseName "edxp" - } - } - -} \ No newline at end of file diff --git a/README.md b/README.md index 49bb3a42..61c153ad 100644 --- a/README.md +++ b/README.md @@ -32,10 +32,9 @@ and zip binaries can be downloaded from [here](http://gnuwin32.sourceforge.net/p ## Build -1. run `:Bridge:makeAndCopyRelease` in Gradle window to build `edxp.jar` -2. run `:Core:zipRelease` to build Magisk Riru module flashable zip file -3. find the flashable under `Core/release/` -4. flash the zip in recovery mode or in Magisk Manager +1. run `./gradlew :edxp-core:zipRelease` to build flashable zip +2. find the flashable under `edxp-core/release/` +3. flash the zip in recovery mode or in Magisk Manager ## Install diff --git a/build.gradle b/build.gradle index 7d4bf63d..d5187bf6 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:3.3.2' // NOTE: Do not place your application dependencies here; they belong diff --git a/Core/.gitignore b/edxp-core/.gitignore similarity index 100% rename from Core/.gitignore rename to edxp-core/.gitignore diff --git a/Core/build-module.sh b/edxp-core/build-module.sh similarity index 100% rename from Core/build-module.sh rename to edxp-core/build-module.sh diff --git a/Core/build.gradle b/edxp-core/build.gradle similarity index 80% rename from Core/build.gradle rename to edxp-core/build.gradle index bcb47d16..3f22d263 100644 --- a/Core/build.gradle +++ b/edxp-core/build.gradle @@ -1,5 +1,4 @@ -import org.gradle.internal.os.OperatingSystem; - +import org.gradle.internal.os.OperatingSystem apply plugin: 'com.android.library' version "v0.3.1.6_beta-SNAPSHOT" extensions["module_name"] = "EdXposed" @@ -28,12 +27,12 @@ afterEvaluate { def nameCapped = variant.name.capitalize() def nameLowered = variant.name.toLowerCase() - def zipTask = task("zip${nameCapped}", type: Exec, dependsOn: ":Bridge:makeAndCopy${nameCapped}") { + def zipTask = task("zip${nameCapped}", type: Exec, dependsOn: ":edxp-yahfa:makeAndCopy${nameCapped}") { workingDir '..' - commandLine 'sh', 'build.sh', \ - project.name, \ - "${project.version}-${nameLowered}", \ - "${project.extensions['module_name']}" + commandLine 'sh', 'build.sh', \ + project.name, \ + "${project.version}-${nameLowered}", \ + "${project.extensions['module_name']}" } def pushTask = task("push${nameCapped}", type: Exec) { @@ -51,3 +50,6 @@ afterEvaluate { } } + +dependencies { +} \ No newline at end of file diff --git a/Core/jni/.gitattributes b/edxp-core/jni/.gitattributes similarity index 100% rename from Core/jni/.gitattributes rename to edxp-core/jni/.gitattributes diff --git a/Core/jni/Android.mk b/edxp-core/jni/Android.mk similarity index 100% rename from Core/jni/Android.mk rename to edxp-core/jni/Android.mk diff --git a/Core/jni/Application.mk b/edxp-core/jni/Application.mk similarity index 100% rename from Core/jni/Application.mk rename to edxp-core/jni/Application.mk diff --git a/Core/jni/external/Android.mk b/edxp-core/jni/external/Android.mk similarity index 100% rename from Core/jni/external/Android.mk rename to edxp-core/jni/external/Android.mk diff --git a/Core/jni/external/include/xhook/xhook.h b/edxp-core/jni/external/include/xhook/xhook.h similarity index 100% rename from Core/jni/external/include/xhook/xhook.h rename to edxp-core/jni/external/include/xhook/xhook.h diff --git a/Core/jni/external/xhook/queue.h b/edxp-core/jni/external/xhook/queue.h similarity index 100% rename from Core/jni/external/xhook/queue.h rename to edxp-core/jni/external/xhook/queue.h diff --git a/Core/jni/external/xhook/tree.h b/edxp-core/jni/external/xhook/tree.h similarity index 100% rename from Core/jni/external/xhook/tree.h rename to edxp-core/jni/external/xhook/tree.h diff --git a/Core/jni/external/xhook/xh_core.c b/edxp-core/jni/external/xhook/xh_core.c similarity index 100% rename from Core/jni/external/xhook/xh_core.c rename to edxp-core/jni/external/xhook/xh_core.c diff --git a/Core/jni/external/xhook/xh_core.h b/edxp-core/jni/external/xhook/xh_core.h similarity index 100% rename from Core/jni/external/xhook/xh_core.h rename to edxp-core/jni/external/xhook/xh_core.h diff --git a/Core/jni/external/xhook/xh_elf.c b/edxp-core/jni/external/xhook/xh_elf.c similarity index 100% rename from Core/jni/external/xhook/xh_elf.c rename to edxp-core/jni/external/xhook/xh_elf.c diff --git a/Core/jni/external/xhook/xh_elf.h b/edxp-core/jni/external/xhook/xh_elf.h similarity index 100% rename from Core/jni/external/xhook/xh_elf.h rename to edxp-core/jni/external/xhook/xh_elf.h diff --git a/Core/jni/external/xhook/xh_errno.h b/edxp-core/jni/external/xhook/xh_errno.h similarity index 100% rename from Core/jni/external/xhook/xh_errno.h rename to edxp-core/jni/external/xhook/xh_errno.h diff --git a/Core/jni/external/xhook/xh_jni.c b/edxp-core/jni/external/xhook/xh_jni.c similarity index 100% rename from Core/jni/external/xhook/xh_jni.c rename to edxp-core/jni/external/xhook/xh_jni.c diff --git a/Core/jni/external/xhook/xh_log.c b/edxp-core/jni/external/xhook/xh_log.c similarity index 100% rename from Core/jni/external/xhook/xh_log.c rename to edxp-core/jni/external/xhook/xh_log.c diff --git a/Core/jni/external/xhook/xh_log.h b/edxp-core/jni/external/xhook/xh_log.h similarity index 100% rename from Core/jni/external/xhook/xh_log.h rename to edxp-core/jni/external/xhook/xh_log.h diff --git a/Core/jni/external/xhook/xh_util.c b/edxp-core/jni/external/xhook/xh_util.c similarity index 100% rename from Core/jni/external/xhook/xh_util.c rename to edxp-core/jni/external/xhook/xh_util.c diff --git a/Core/jni/external/xhook/xh_util.h b/edxp-core/jni/external/xhook/xh_util.h similarity index 100% rename from Core/jni/external/xhook/xh_util.h rename to edxp-core/jni/external/xhook/xh_util.h diff --git a/Core/jni/external/xhook/xh_version.c b/edxp-core/jni/external/xhook/xh_version.c similarity index 100% rename from Core/jni/external/xhook/xh_version.c rename to edxp-core/jni/external/xhook/xh_version.c diff --git a/Core/jni/external/xhook/xh_version.h b/edxp-core/jni/external/xhook/xh_version.h similarity index 100% rename from Core/jni/external/xhook/xh_version.h rename to edxp-core/jni/external/xhook/xh_version.h diff --git a/Core/jni/external/xhook/xhook.c b/edxp-core/jni/external/xhook/xhook.c similarity index 100% rename from Core/jni/external/xhook/xhook.c rename to edxp-core/jni/external/xhook/xhook.c diff --git a/Core/jni/external/xhook/xhook.h b/edxp-core/jni/external/xhook/xhook.h similarity index 100% rename from Core/jni/external/xhook/xhook.h rename to edxp-core/jni/external/xhook/xhook.h diff --git a/Core/jni/main/Android.mk b/edxp-core/jni/main/Android.mk similarity index 100% rename from Core/jni/main/Android.mk rename to edxp-core/jni/main/Android.mk diff --git a/Core/jni/main/include/JNIHelper.h b/edxp-core/jni/main/include/JNIHelper.h similarity index 100% rename from Core/jni/main/include/JNIHelper.h rename to edxp-core/jni/main/include/JNIHelper.h diff --git a/Core/jni/main/include/android_build.h b/edxp-core/jni/main/include/android_build.h similarity index 100% rename from Core/jni/main/include/android_build.h rename to edxp-core/jni/main/include/android_build.h diff --git a/Core/jni/main/include/config.h b/edxp-core/jni/main/include/config.h similarity index 100% rename from Core/jni/main/include/config.h rename to edxp-core/jni/main/include/config.h diff --git a/Core/jni/main/include/fd_utils-inl.h b/edxp-core/jni/main/include/fd_utils-inl.h similarity index 100% rename from Core/jni/main/include/fd_utils-inl.h rename to edxp-core/jni/main/include/fd_utils-inl.h diff --git a/Core/jni/main/include/logging.h b/edxp-core/jni/main/include/logging.h similarity index 100% rename from Core/jni/main/include/logging.h rename to edxp-core/jni/main/include/logging.h diff --git a/Core/jni/main/include/misc.cpp b/edxp-core/jni/main/include/misc.cpp similarity index 100% rename from Core/jni/main/include/misc.cpp rename to edxp-core/jni/main/include/misc.cpp diff --git a/Core/jni/main/include/misc.h b/edxp-core/jni/main/include/misc.h similarity index 100% rename from Core/jni/main/include/misc.h rename to edxp-core/jni/main/include/misc.h diff --git a/Core/jni/main/include/riru.c b/edxp-core/jni/main/include/riru.c similarity index 100% rename from Core/jni/main/include/riru.c rename to edxp-core/jni/main/include/riru.c diff --git a/Core/jni/main/include/riru.h b/edxp-core/jni/main/include/riru.h similarity index 100% rename from Core/jni/main/include/riru.h rename to edxp-core/jni/main/include/riru.h diff --git a/Core/jni/main/inject/config_manager.cpp b/edxp-core/jni/main/inject/config_manager.cpp similarity index 100% rename from Core/jni/main/inject/config_manager.cpp rename to edxp-core/jni/main/inject/config_manager.cpp diff --git a/Core/jni/main/inject/config_manager.h b/edxp-core/jni/main/inject/config_manager.h similarity index 100% rename from Core/jni/main/inject/config_manager.h rename to edxp-core/jni/main/inject/config_manager.h diff --git a/Core/jni/main/inject/framework_hook.cpp b/edxp-core/jni/main/inject/framework_hook.cpp similarity index 100% rename from Core/jni/main/inject/framework_hook.cpp rename to edxp-core/jni/main/inject/framework_hook.cpp diff --git a/Core/jni/main/inject/framework_hook.h b/edxp-core/jni/main/inject/framework_hook.h similarity index 100% rename from Core/jni/main/inject/framework_hook.h rename to edxp-core/jni/main/inject/framework_hook.h diff --git a/Core/jni/main/java_hook/java_hook.cpp b/edxp-core/jni/main/java_hook/java_hook.cpp similarity index 100% rename from Core/jni/main/java_hook/java_hook.cpp rename to edxp-core/jni/main/java_hook/java_hook.cpp diff --git a/Core/jni/main/java_hook/java_hook.h b/edxp-core/jni/main/java_hook/java_hook.h similarity index 100% rename from Core/jni/main/java_hook/java_hook.h rename to edxp-core/jni/main/java_hook/java_hook.h diff --git a/Core/jni/main/main.cpp b/edxp-core/jni/main/main.cpp similarity index 100% rename from Core/jni/main/main.cpp rename to edxp-core/jni/main/main.cpp diff --git a/Core/jni/main/native_hook/native_hook.cpp b/edxp-core/jni/main/native_hook/native_hook.cpp similarity index 100% rename from Core/jni/main/native_hook/native_hook.cpp rename to edxp-core/jni/main/native_hook/native_hook.cpp diff --git a/Core/jni/main/native_hook/native_hook.h b/edxp-core/jni/main/native_hook/native_hook.h similarity index 100% rename from Core/jni/main/native_hook/native_hook.h rename to edxp-core/jni/main/native_hook/native_hook.h diff --git a/Core/jni/main/native_hook/riru_hook.cpp b/edxp-core/jni/main/native_hook/riru_hook.cpp similarity index 100% rename from Core/jni/main/native_hook/riru_hook.cpp rename to edxp-core/jni/main/native_hook/riru_hook.cpp diff --git a/Core/jni/main/native_hook/riru_hook.h b/edxp-core/jni/main/native_hook/riru_hook.h similarity index 100% rename from Core/jni/main/native_hook/riru_hook.h rename to edxp-core/jni/main/native_hook/riru_hook.h diff --git a/Core/jni/main/yahfa/HookMain.c b/edxp-core/jni/main/yahfa/HookMain.c similarity index 100% rename from Core/jni/main/yahfa/HookMain.c rename to edxp-core/jni/main/yahfa/HookMain.c diff --git a/Core/jni/main/yahfa/HookMain.h b/edxp-core/jni/main/yahfa/HookMain.h similarity index 100% rename from Core/jni/main/yahfa/HookMain.h rename to edxp-core/jni/main/yahfa/HookMain.h diff --git a/Core/jni/main/yahfa/common.h b/edxp-core/jni/main/yahfa/common.h similarity index 100% rename from Core/jni/main/yahfa/common.h rename to edxp-core/jni/main/yahfa/common.h diff --git a/Core/jni/main/yahfa/env.h b/edxp-core/jni/main/yahfa/env.h similarity index 100% rename from Core/jni/main/yahfa/env.h rename to edxp-core/jni/main/yahfa/env.h diff --git a/Core/jni/main/yahfa/trampoline.c b/edxp-core/jni/main/yahfa/trampoline.c similarity index 100% rename from Core/jni/main/yahfa/trampoline.c rename to edxp-core/jni/main/yahfa/trampoline.c diff --git a/Core/jni/main/yahfa/trampoline.h b/edxp-core/jni/main/yahfa/trampoline.h similarity index 100% rename from Core/jni/main/yahfa/trampoline.h rename to edxp-core/jni/main/yahfa/trampoline.h diff --git a/Core/src/main/AndroidManifest.xml b/edxp-core/src/main/AndroidManifest.xml similarity index 100% rename from Core/src/main/AndroidManifest.xml rename to edxp-core/src/main/AndroidManifest.xml diff --git a/Core/template_override/META-INF/com/google/android/update-binary b/edxp-core/template_override/META-INF/com/google/android/update-binary similarity index 100% rename from Core/template_override/META-INF/com/google/android/update-binary rename to edxp-core/template_override/META-INF/com/google/android/update-binary diff --git a/Core/template_override/META-INF/com/google/android/updater-script b/edxp-core/template_override/META-INF/com/google/android/updater-script similarity index 100% rename from Core/template_override/META-INF/com/google/android/updater-script rename to edxp-core/template_override/META-INF/com/google/android/updater-script diff --git a/Core/template_override/common/post-fs-data.sh b/edxp-core/template_override/common/post-fs-data.sh similarity index 100% rename from Core/template_override/common/post-fs-data.sh rename to edxp-core/template_override/common/post-fs-data.sh diff --git a/Core/template_override/common/service.sh b/edxp-core/template_override/common/service.sh similarity index 100% rename from Core/template_override/common/service.sh rename to edxp-core/template_override/common/service.sh diff --git a/Core/template_override/common/system.prop b/edxp-core/template_override/common/system.prop similarity index 100% rename from Core/template_override/common/system.prop rename to edxp-core/template_override/common/system.prop diff --git a/Core/template_override/common/util_functions.sh b/edxp-core/template_override/common/util_functions.sh similarity index 100% rename from Core/template_override/common/util_functions.sh rename to edxp-core/template_override/common/util_functions.sh diff --git a/Core/template_override/config.sh b/edxp-core/template_override/config.sh similarity index 100% rename from Core/template_override/config.sh rename to edxp-core/template_override/config.sh diff --git a/Core/template_override/module.prop b/edxp-core/template_override/module.prop similarity index 100% rename from Core/template_override/module.prop rename to edxp-core/template_override/module.prop diff --git a/Core/template_override/riru_module.prop b/edxp-core/template_override/riru_module.prop similarity index 100% rename from Core/template_override/riru_module.prop rename to edxp-core/template_override/riru_module.prop diff --git a/Core/template_override/system/framework/edconfig.jar b/edxp-core/template_override/system/framework/edconfig.jar similarity index 100% rename from Core/template_override/system/framework/edconfig.jar rename to edxp-core/template_override/system/framework/edconfig.jar diff --git a/Core/template_override/system/framework/eddalvikdx.jar b/edxp-core/template_override/system/framework/eddalvikdx.jar similarity index 100% rename from Core/template_override/system/framework/eddalvikdx.jar rename to edxp-core/template_override/system/framework/eddalvikdx.jar diff --git a/Core/template_override/system/framework/eddexmaker.jar b/edxp-core/template_override/system/framework/eddexmaker.jar similarity index 100% rename from Core/template_override/system/framework/eddexmaker.jar rename to edxp-core/template_override/system/framework/eddexmaker.jar diff --git a/Core/template_override/system/lib/libwhale.so b/edxp-core/template_override/system/lib/libwhale.so similarity index 100% rename from Core/template_override/system/lib/libwhale.so rename to edxp-core/template_override/system/lib/libwhale.so diff --git a/Core/template_override/system/lib64/libwhale.so b/edxp-core/template_override/system/lib64/libwhale.so similarity index 100% rename from Core/template_override/system/lib64/libwhale.so rename to edxp-core/template_override/system/lib64/libwhale.so diff --git a/Core/template_override/system_x86/lib/libwhale.so b/edxp-core/template_override/system_x86/lib/libwhale.so similarity index 100% rename from Core/template_override/system_x86/lib/libwhale.so rename to edxp-core/template_override/system_x86/lib/libwhale.so diff --git a/Core/template_override/system_x86/lib64/libwhale.so b/edxp-core/template_override/system_x86/lib64/libwhale.so similarity index 100% rename from Core/template_override/system_x86/lib64/libwhale.so rename to edxp-core/template_override/system_x86/lib64/libwhale.so diff --git a/Bridge/.gitignore b/edxp-yahfa/.gitignore similarity index 100% rename from Bridge/.gitignore rename to edxp-yahfa/.gitignore diff --git a/edxp-yahfa/build.gradle b/edxp-yahfa/build.gradle new file mode 100644 index 00000000..f8e0e74f --- /dev/null +++ b/edxp-yahfa/build.gradle @@ -0,0 +1,61 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 28 + + defaultConfig { + applicationId "com.elderdrivers.riru.edxp.yahfa" + minSdkVersion 26 + targetSdkVersion 28 + versionCode 1 + versionName "1.0" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + +} + +dependencies { + compileOnly files("libs/framework-stub.jar") + implementation project(':xposed-bridge') + compileOnly project(':dexmaker') +} + + +preBuild.doLast { + def imlFile = file(project.name + ".iml") + println 'Change ' + project.name + '.iml order' + try { + def parsedXml = (new groovy.util.XmlParser()).parse(imlFile) + def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' } + parsedXml.component[1].remove(jdkNode) + def sdkString = "Android API " + android.compileSdkVersion.substring("android-".length()) + " Platform" + new groovy.util.Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK']) + groovy.xml.XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile)) + } catch (FileNotFoundException e) { + // nop, iml not found + } +} + +afterEvaluate { + + tasks.withType(JavaCompile) { + options.compilerArgs.add("-Xbootclasspath/p:${projectDir.absolutePath}/libs/framework-stub.jar") + } + + android.applicationVariants.all { variant -> + def nameCapped = variant.name.capitalize() + def nameLowered = variant.name.toLowerCase() + + def makeAndCopyTask = task("makeAndCopy${nameCapped}", type: Jar, dependsOn: "assemble${nameCapped}") { + from "build/intermediates/dex/${nameLowered}/mergeDex${nameCapped}/out/" + destinationDir file("../edxp-core/template_override/system/framework/") + baseName "edxp" + } + } +} \ No newline at end of file diff --git a/Bridge/libs/framework-stub.jar b/edxp-yahfa/libs/framework-stub.jar similarity index 100% rename from Bridge/libs/framework-stub.jar rename to edxp-yahfa/libs/framework-stub.jar diff --git a/Bridge/proguard-rules.pro b/edxp-yahfa/proguard-rules.pro similarity index 100% rename from Bridge/proguard-rules.pro rename to edxp-yahfa/proguard-rules.pro diff --git a/edxp-yahfa/src/main/AndroidManifest.xml b/edxp-yahfa/src/main/AndroidManifest.xml new file mode 100644 index 00000000..7998b31b --- /dev/null +++ b/edxp-yahfa/src/main/AndroidManifest.xml @@ -0,0 +1 @@ + diff --git a/Bridge/src/main/java/com/elderdrivers/riru/common/KeepAll.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/common/KeepAll.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/common/KeepAll.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/common/KeepAll.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/common/KeepMembers.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/common/KeepMembers.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/common/KeepMembers.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/common/KeepMembers.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/config/ConfigManager.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/config/ConfigManager.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/config/ConfigManager.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/config/ConfigManager.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/config/InstallerChooser.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/config/InstallerChooser.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/config/InstallerChooser.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/config/InstallerChooser.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/util/ClassLoaderUtils.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/ClassLoaderUtils.java similarity index 96% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/util/ClassLoaderUtils.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/ClassLoaderUtils.java index 82528cff..af7dd803 100644 --- a/Bridge/src/main/java/com/elderdrivers/riru/edxp/util/ClassLoaderUtils.java +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/ClassLoaderUtils.java @@ -11,6 +11,7 @@ import java.util.HashSet; import java.util.List; import dalvik.system.PathClassLoader; +import de.robv.android.xposed.XposedHelpers; public class ClassLoaderUtils { @@ -91,7 +92,7 @@ public class ClassLoaderUtils { try { PathClassLoader baseDexClassLoader = (PathClassLoader) classLoader; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - baseDexClassLoader.addDexPath(DEXPATH); + XposedHelpers.callMethod(baseDexClassLoader, "addDexPath", DEXPATH); } else { DexUtils.injectDexAtFirst(DEXPATH, baseDexClassLoader); } diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/util/DexUtils.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/DexUtils.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/util/DexUtils.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/DexUtils.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/util/FileUtils.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/FileUtils.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/util/FileUtils.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/FileUtils.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/util/InlinedMethodCallers.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/InlinedMethodCallers.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/util/InlinedMethodCallers.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/InlinedMethodCallers.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/util/PrebuiltMethodsDeopter.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/PrebuiltMethodsDeopter.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/util/PrebuiltMethodsDeopter.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/PrebuiltMethodsDeopter.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/util/ProcessUtils.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/ProcessUtils.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/util/ProcessUtils.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/ProcessUtils.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/util/Utils.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/Utils.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/util/Utils.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/util/Utils.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/Main.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/Main.java similarity index 98% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/Main.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/Main.java index a7b9933d..73edd260 100644 --- a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/Main.java +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/Main.java @@ -7,6 +7,7 @@ import android.os.Process; import com.elderdrivers.riru.common.KeepAll; import com.elderdrivers.riru.edxp.BuildConfig; import com.elderdrivers.riru.edxp.yahfa.core.HookMethodResolver; +import com.elderdrivers.riru.edxp.yahfa.entry.Router; import com.elderdrivers.riru.edxp.yahfa.proxy.BlackWhiteListProxy; import com.elderdrivers.riru.edxp.yahfa.proxy.NormalProxy; import com.elderdrivers.riru.edxp.util.Utils; @@ -26,6 +27,7 @@ public class Main implements KeepAll { static { init(Build.VERSION.SDK_INT); HookMethodResolver.init(); + Router.injectConfig(); } /////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaEdxpConfig.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaEdxpConfig.java new file mode 100644 index 00000000..3a27654f --- /dev/null +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaEdxpConfig.java @@ -0,0 +1,23 @@ +package com.elderdrivers.riru.edxp.yahfa.config; + +import com.elderdrivers.riru.edxp.config.EdXpConfig; +import com.elderdrivers.riru.edxp.config.InstallerChooser; +import com.elderdrivers.riru.edxp.yahfa.Main; +import com.elderdrivers.riru.edxp.yahfa.entry.hooker.XposedBlackListHooker; + +public class YahfaEdxpConfig implements EdXpConfig { + @Override + public String getInstallerBaseDir() { + return InstallerChooser.INSTALLER_DATA_BASE_DIR; + } + + @Override + public String getBlackListModulePackageName() { + return XposedBlackListHooker.BLACK_LIST_PACKAGE_NAME; + } + + @Override + public boolean isDynamicModulesMode() { + return Main.isDynamicModulesEnabled(); + } +} diff --git a/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaHookProvider.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaHookProvider.java new file mode 100644 index 00000000..a160de32 --- /dev/null +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/config/YahfaHookProvider.java @@ -0,0 +1,33 @@ +package com.elderdrivers.riru.edxp.yahfa.config; + +import com.elderdrivers.riru.edxp.hook.HookProvider; +import com.elderdrivers.riru.edxp.util.PrebuiltMethodsDeopter; +import com.elderdrivers.riru.edxp.yahfa.dexmaker.DexMakerUtils; +import com.elderdrivers.riru.edxp.yahfa.dexmaker.DynamicBridge; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Member; + +import de.robv.android.xposed.XposedBridge; + +public class YahfaHookProvider implements HookProvider { + @Override + public void hookMethod(Member method, XposedBridge.AdditionalHookInfo additionalInfo) { + DynamicBridge.hookMethod(method, additionalInfo); + } + + @Override + public Object invokeOriginalMethod(Member method, Object thisObject, Object[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { + return DynamicBridge.invokeOriginalMethod(method, thisObject, args); + } + + @Override + public Member findMethodNative(Member hookMethod) { + return DexMakerUtils.findMethodNative(hookMethod); + } + + @Override + public void deoptMethods(String packageName, ClassLoader classLoader) { + PrebuiltMethodsDeopter.deoptMethods(packageName, classLoader); + } +} diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/core/HookMain.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/core/HookMain.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/core/HookMain.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/core/HookMain.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/core/HookMethodResolver.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/core/HookMethodResolver.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/core/HookMethodResolver.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/core/HookMethodResolver.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DexLog.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DexLog.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DexLog.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DexLog.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DexMakerUtils.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DexMakerUtils.java similarity index 94% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DexMakerUtils.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DexMakerUtils.java index 4083e370..5b56caf3 100644 --- a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DexMakerUtils.java +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DexMakerUtils.java @@ -3,10 +3,13 @@ package com.elderdrivers.riru.edxp.yahfa.dexmaker; import android.app.AndroidAppHelper; import android.os.Build; import android.text.TextUtils; +import android.util.Log; import com.elderdrivers.riru.edxp.yahfa.Main; import com.elderdrivers.riru.edxp.config.ConfigManager; +import com.elderdrivers.riru.edxp.yahfa.core.HookMain; +import java.lang.reflect.Member; import java.security.MessageDigest; import java.util.HashMap; import java.util.Map; @@ -243,4 +246,17 @@ public class DexMakerUtils { } return ""; } + + public static Member findMethodNative(Member hookMethod) { + MethodInfo methodInfo = new MethodInfo(hookMethod); + Class declaringClass = methodInfo.getClassForSure(); + Member reflectMethod = (Member) HookMain.findMethod( + declaringClass, methodInfo.methodName, methodInfo.methodSig); + if (reflectMethod == null) { + DexLog.e("method not found: name=" + + methodInfo.methodName + ", sig=" + methodInfo.methodSig); + reflectMethod = hookMethod; + } + return reflectMethod; + } } diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DynamicBridge.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DynamicBridge.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DynamicBridge.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/DynamicBridge.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/HookerDexMaker.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/HookerDexMaker.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/HookerDexMaker.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/HookerDexMaker.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/MethodInfo.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/MethodInfo.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/MethodInfo.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/dexmaker/MethodInfo.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/Router.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/Router.java similarity index 74% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/Router.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/Router.java index bc931e41..980ca8f5 100644 --- a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/Router.java +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/Router.java @@ -1,7 +1,12 @@ package com.elderdrivers.riru.edxp.yahfa.entry; +import android.app.AndroidAppHelper; import android.text.TextUtils; +import com.elderdrivers.riru.edxp.config.EdXpConfigGlobal; +import com.elderdrivers.riru.edxp.util.Utils; +import com.elderdrivers.riru.edxp.yahfa.config.YahfaEdxpConfig; +import com.elderdrivers.riru.edxp.yahfa.config.YahfaHookProvider; import com.elderdrivers.riru.edxp.yahfa.core.HookMain; import com.elderdrivers.riru.edxp.yahfa.dexmaker.DynamicBridge; import com.elderdrivers.riru.edxp.yahfa.entry.bootstrap.AppBootstrapHookInfo; @@ -9,7 +14,8 @@ import com.elderdrivers.riru.edxp.yahfa.entry.bootstrap.SysBootstrapHookInfo; import com.elderdrivers.riru.edxp.yahfa.entry.bootstrap.SysInnerHookInfo; import com.elderdrivers.riru.edxp.yahfa.entry.bootstrap.WorkAroundHookInfo; import com.elderdrivers.riru.edxp.yahfa.entry.hooker.SystemMainHooker; -import com.elderdrivers.riru.edxp.util.Utils; + +import java.util.concurrent.atomic.AtomicBoolean; import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.XposedInit; @@ -18,6 +24,9 @@ public class Router { public volatile static boolean forkCompleted = false; + private static volatile AtomicBoolean bootstrapHooked = new AtomicBoolean(false); + + public static void prepare(boolean isSystem) { // this flag is needed when loadModules XposedInit.startsSystemServer = isSystem; @@ -43,6 +52,10 @@ public class Router { public static void installBootstrapHooks(boolean isSystem) { // Initialize the Xposed framework try { + if (!bootstrapHooked.compareAndSet(false, true)) { + return; + } + Router.startBootstrapHook(isSystem); XposedInit.initForZygote(isSystem); } catch (Throwable t) { Utils.logE("error during Xposed initialization", t); @@ -93,4 +106,19 @@ public class Router { forkCompleted = true; DynamicBridge.onForkPost(); } + + public static void logD(String prefix) { + Utils.logD(String.format("%s: pkg=%s, prc=%s", prefix, AndroidAppHelper.currentPackageName(), + AndroidAppHelper.currentProcessName())); + } + + public static void logE(String prefix, Throwable throwable) { + Utils.logE(String.format("%s: pkg=%s, prc=%s", prefix, AndroidAppHelper.currentPackageName(), + AndroidAppHelper.currentProcessName()), throwable); + } + + public static void injectConfig() { + EdXpConfigGlobal.sConfig = new YahfaEdxpConfig(); + EdXpConfigGlobal.sHookProvider = new YahfaHookProvider(); + } } diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/AppBootstrapHookInfo.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/AppBootstrapHookInfo.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/AppBootstrapHookInfo.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/AppBootstrapHookInfo.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/SysBootstrapHookInfo.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/SysBootstrapHookInfo.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/SysBootstrapHookInfo.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/SysBootstrapHookInfo.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/SysInnerHookInfo.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/SysInnerHookInfo.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/SysInnerHookInfo.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/SysInnerHookInfo.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/WorkAroundHookInfo.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/WorkAroundHookInfo.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/WorkAroundHookInfo.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/bootstrap/WorkAroundHookInfo.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/HandleBindAppHooker.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/HandleBindAppHooker.java similarity index 73% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/HandleBindAppHooker.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/HandleBindAppHooker.java index 5292f0b2..2d3050e7 100644 --- a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/HandleBindAppHooker.java +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/HandleBindAppHooker.java @@ -7,20 +7,18 @@ import android.content.pm.ApplicationInfo; import android.content.res.CompatibilityInfo; import com.elderdrivers.riru.common.KeepMembers; -import com.elderdrivers.riru.edxp.yahfa.Main; import com.elderdrivers.riru.edxp.util.Utils; +import com.elderdrivers.riru.edxp.yahfa.Main; +import com.elderdrivers.riru.edxp.yahfa.entry.Router; import de.robv.android.xposed.XposedBridge; +import de.robv.android.xposed.XposedHelpers; +import de.robv.android.xposed.XposedInit; import de.robv.android.xposed.callbacks.XC_LoadPackage; import static com.elderdrivers.riru.edxp.config.InstallerChooser.INSTALLER_PACKAGE_NAME; -import static com.elderdrivers.riru.edxp.yahfa.entry.hooker.XposedBlackListHooker.BLACK_LIST_PACKAGE_NAME; import static com.elderdrivers.riru.edxp.util.ClassLoaderUtils.replaceParentClassLoader; -import static de.robv.android.xposed.XposedHelpers.getObjectField; -import static de.robv.android.xposed.XposedHelpers.setObjectField; -import static de.robv.android.xposed.XposedInit.loadedPackagesInProcess; -import static de.robv.android.xposed.XposedInit.logD; -import static de.robv.android.xposed.XposedInit.logE; +import static com.elderdrivers.riru.edxp.yahfa.entry.hooker.XposedBlackListHooker.BLACK_LIST_PACKAGE_NAME; // normal process initialization (for new Activity, Service, BroadcastReceiver etc.) public class HandleBindAppHooker implements KeepMembers { @@ -35,39 +33,39 @@ public class HandleBindAppHooker implements KeepMembers { return; } try { - logD("ActivityThread#handleBindApplication() starts"); + Router.logD("ActivityThread#handleBindApplication() starts"); ActivityThread activityThread = (ActivityThread) thiz; - ApplicationInfo appInfo = (ApplicationInfo) getObjectField(bindData, "appInfo"); + ApplicationInfo appInfo = (ApplicationInfo) XposedHelpers.getObjectField(bindData, "appInfo"); // save app process name here for later use - Main.appProcessName = (String) getObjectField(bindData, "processName"); + Main.appProcessName = (String) XposedHelpers.getObjectField(bindData, "processName"); String reportedPackageName = appInfo.packageName.equals("android") ? "system" : appInfo.packageName; - Utils.logD("processName=" + Main.appProcessName + + Utils.logD("processName=" + Main.appProcessName + ", packageName=" + reportedPackageName + ", appDataDir=" + Main.appDataDir); if (XposedBlackListHooker.shouldDisableHooks(reportedPackageName)) { return; } - ComponentName instrumentationName = (ComponentName) getObjectField(bindData, "instrumentationName"); + ComponentName instrumentationName = (ComponentName) XposedHelpers.getObjectField(bindData, "instrumentationName"); if (instrumentationName != null) { - logD("Instrumentation detected, disabling framework for"); + Router.logD("Instrumentation detected, disabling framework for"); XposedBridge.disableHooks = true; return; } - CompatibilityInfo compatInfo = (CompatibilityInfo) getObjectField(bindData, "compatInfo"); + CompatibilityInfo compatInfo = (CompatibilityInfo) XposedHelpers.getObjectField(bindData, "compatInfo"); if (appInfo.sourceDir == null) { return; } - setObjectField(activityThread, "mBoundApplication", bindData); - loadedPackagesInProcess.add(reportedPackageName); + XposedHelpers.setObjectField(activityThread, "mBoundApplication", bindData); + XposedInit.loadedPackagesInProcess.add(reportedPackageName); LoadedApk loadedApk = activityThread.getPackageInfoNoCheck(appInfo, compatInfo); replaceParentClassLoader(loadedApk.getClassLoader()); XC_LoadPackage.LoadPackageParam lpparam = new XC_LoadPackage.LoadPackageParam(XposedBridge.sLoadedPackageCallbacks); lpparam.packageName = reportedPackageName; - lpparam.processName = (String) getObjectField(bindData, "processName"); + lpparam.processName = (String) XposedHelpers.getObjectField(bindData, "processName"); lpparam.classLoader = loadedApk.getClassLoader(); lpparam.appInfo = appInfo; lpparam.isFirstApplication = true; @@ -80,7 +78,7 @@ public class HandleBindAppHooker implements KeepMembers { XposedBlackListHooker.hook(lpparam.classLoader); } } catch (Throwable t) { - logE("error when hooking bindApp", t); + Router.logE("error when hooking bindApp", t); } finally { backup(thiz, bindData); } diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/LoadedApkConstructorHooker.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/LoadedApkConstructorHooker.java similarity index 77% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/LoadedApkConstructorHooker.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/LoadedApkConstructorHooker.java index 44302a9e..ce2f7605 100644 --- a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/LoadedApkConstructorHooker.java +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/LoadedApkConstructorHooker.java @@ -8,16 +8,14 @@ import android.content.res.CompatibilityInfo; import android.util.Log; import com.elderdrivers.riru.common.KeepMembers; +import com.elderdrivers.riru.edxp.yahfa.entry.Router; import de.robv.android.xposed.XposedBridge; +import de.robv.android.xposed.XposedHelpers; +import de.robv.android.xposed.XposedInit; import de.robv.android.xposed.callbacks.XC_LoadPackage; import static com.elderdrivers.riru.edxp.util.ClassLoaderUtils.replaceParentClassLoader; -import static de.robv.android.xposed.XposedHelpers.getBooleanField; -import static de.robv.android.xposed.XposedHelpers.getObjectField; -import static de.robv.android.xposed.XposedInit.loadedPackagesInProcess; -import static de.robv.android.xposed.XposedInit.logD; -import static de.robv.android.xposed.XposedInit.logE; // when a package is loaded for an existing process, trigger the callbacks as well // ed: remove resources related hooking @@ -40,40 +38,40 @@ public class LoadedApkConstructorHooker implements KeepMembers { return; } - logD("LoadedApk# starts"); + Router.logD("LoadedApk# starts"); backup(thiz, activityThread, aInfo, compatInfo, baseLoader, securityViolation, includeCode, registerPackage); try { LoadedApk loadedApk = (LoadedApk) thiz; String packageName = loadedApk.getPackageName(); - Object mAppDir = getObjectField(thiz, "mAppDir"); - logD("LoadedApk# ends: " + mAppDir); + Object mAppDir = XposedHelpers.getObjectField(thiz, "mAppDir"); + Router.logD("LoadedApk# ends: " + mAppDir); if (XposedBlackListHooker.shouldDisableHooks(packageName)) { return; } if (packageName.equals("android")) { - logD("LoadedApk# is android, skip: " + mAppDir); + Router.logD("LoadedApk# is android, skip: " + mAppDir); return; } // mIncludeCode checking should go ahead of loadedPackagesInProcess added checking - if (!getBooleanField(loadedApk, "mIncludeCode")) { - logD("LoadedApk# mIncludeCode == false: " + mAppDir); + if (!XposedHelpers.getBooleanField(loadedApk, "mIncludeCode")) { + Router.logD("LoadedApk# mIncludeCode == false: " + mAppDir); return; } - if (!loadedPackagesInProcess.add(packageName)) { - logD("LoadedApk# has been loaded before, skip: " + mAppDir); + if (!XposedInit.loadedPackagesInProcess.add(packageName)) { + Router.logD("LoadedApk# has been loaded before, skip: " + mAppDir); return; } // OnePlus magic... if (Log.getStackTraceString(new Throwable()). contains("android.app.ActivityThread$ApplicationThread.schedulePreload")) { - logD("LoadedApk# maybe oneplus's custom opt, skip"); + Router.logD("LoadedApk# maybe oneplus's custom opt, skip"); return; } @@ -87,7 +85,7 @@ public class LoadedApkConstructorHooker implements KeepMembers { lpparam.isFirstApplication = false; XC_LoadPackage.callAll(lpparam); } catch (Throwable t) { - logE("error when hooking LoadedApk.", t); + Router.logE("error when hooking LoadedApk.", t); } } diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/OnePlusWorkAroundHooker.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/OnePlusWorkAroundHooker.java similarity index 93% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/OnePlusWorkAroundHooker.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/OnePlusWorkAroundHooker.java index 40bfe6ab..87cda6b2 100644 --- a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/OnePlusWorkAroundHooker.java +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/OnePlusWorkAroundHooker.java @@ -1,13 +1,11 @@ package com.elderdrivers.riru.edxp.yahfa.entry.hooker; import com.elderdrivers.riru.common.KeepMembers; -import com.elderdrivers.riru.edxp.yahfa.entry.Router; import com.elderdrivers.riru.edxp.yahfa.Main; +import com.elderdrivers.riru.edxp.yahfa.entry.Router; import de.robv.android.xposed.XposedBridge; -import static de.robv.android.xposed.XposedInit.logD; - /** * On OnePlus stock roms (Android Pie), {@link dalvik.system.BaseDexClassLoader#findClass(String)} * will open /dev/binder to communicate with PackageManagerService to check whether @@ -33,7 +31,7 @@ public class OnePlusWorkAroundHooker implements KeepMembers { if (XposedBridge.disableHooks || Router.forkCompleted) { return backup(type, packageName); } - logD("BaseDexClassLoader#inCompatConfigList() starts"); + Router.logD("BaseDexClassLoader#inCompatConfigList() starts"); return false; } diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/StartBootstrapServicesHooker.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/StartBootstrapServicesHooker.java similarity index 91% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/StartBootstrapServicesHooker.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/StartBootstrapServicesHooker.java index 0156eebe..7bc1c542 100644 --- a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/StartBootstrapServicesHooker.java +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/StartBootstrapServicesHooker.java @@ -3,17 +3,17 @@ package com.elderdrivers.riru.edxp.yahfa.entry.hooker; import android.os.Build; import com.elderdrivers.riru.common.KeepMembers; +import com.elderdrivers.riru.edxp.yahfa.entry.Router; import de.robv.android.xposed.XC_MethodReplacement; import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.XposedHelpers; +import de.robv.android.xposed.XposedInit; import de.robv.android.xposed.callbacks.XC_LoadPackage; import static com.elderdrivers.riru.edxp.util.ClassLoaderUtils.replaceParentClassLoader; import static com.elderdrivers.riru.edxp.util.Utils.logD; import static de.robv.android.xposed.XposedHelpers.findAndHookMethod; -import static de.robv.android.xposed.XposedInit.loadedPackagesInProcess; -import static de.robv.android.xposed.XposedInit.logE; public class StartBootstrapServicesHooker implements KeepMembers { public static String className = "com.android.server.SystemServer"; @@ -30,7 +30,7 @@ public class StartBootstrapServicesHooker implements KeepMembers { logD("SystemServer#startBootstrapServices() starts"); try { - loadedPackagesInProcess.add("android"); + XposedInit.loadedPackagesInProcess.add("android"); replaceParentClassLoader(SystemMainHooker.systemServerCL); @@ -54,7 +54,7 @@ public class StartBootstrapServicesHooker implements KeepMembers { } catch (XposedHelpers.ClassNotFoundError | NoSuchMethodError ignored) { } } catch (Throwable t) { - logE("error when hooking startBootstrapServices", t); + Router.logE("error when hooking startBootstrapServices", t); } finally { backup(systemServer); } diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/SystemMainHooker.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/SystemMainHooker.java similarity index 85% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/SystemMainHooker.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/SystemMainHooker.java index 9941ee74..92546c91 100644 --- a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/SystemMainHooker.java +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/SystemMainHooker.java @@ -3,14 +3,11 @@ package com.elderdrivers.riru.edxp.yahfa.entry.hooker; import android.app.ActivityThread; import com.elderdrivers.riru.common.KeepMembers; -import com.elderdrivers.riru.edxp.yahfa.entry.Router; import com.elderdrivers.riru.edxp.util.PrebuiltMethodsDeopter; +import com.elderdrivers.riru.edxp.yahfa.entry.Router; import de.robv.android.xposed.XposedBridge; -import static de.robv.android.xposed.XposedInit.logD; -import static de.robv.android.xposed.XposedInit.logE; - // system_server initialization // ed: only support sdk >= 21 for now @@ -26,7 +23,7 @@ public class SystemMainHooker implements KeepMembers { if (XposedBridge.disableHooks) { return backup(); } - logD("ActivityThread#systemMain() starts"); + Router.logD("ActivityThread#systemMain() starts"); ActivityThread activityThread = backup(); try { // get system_server classLoader @@ -35,7 +32,7 @@ public class SystemMainHooker implements KeepMembers { PrebuiltMethodsDeopter.deoptSystemServerMethods(systemServerCL); Router.startSystemServerHook(); } catch (Throwable t) { - logE("error when hooking systemMain", t); + Router.logE("error when hooking systemMain", t); } return activityThread; } diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/XposedBlackListHooker.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/XposedBlackListHooker.java similarity index 94% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/XposedBlackListHooker.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/XposedBlackListHooker.java index 1fe6572a..7261f63b 100644 --- a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/XposedBlackListHooker.java +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/XposedBlackListHooker.java @@ -17,10 +17,10 @@ import java.util.Set; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XSharedPreferences; import de.robv.android.xposed.XposedBridge; +import de.robv.android.xposed.XposedHelpers; import static com.elderdrivers.riru.edxp.config.InstallerChooser.INSTALLER_PACKAGE_NAME; import static com.elderdrivers.riru.edxp.util.FileUtils.IS_USING_PROTECTED_STORAGE; -import static de.robv.android.xposed.XposedHelpers.findAndHookMethod; public class XposedBlackListHooker { @@ -62,7 +62,7 @@ public class XposedBlackListHooker { return; } try { - findAndHookMethod(ContextWrapper.class, "getSharedPreferences", String.class, int.class, new XC_MethodHook() { + XposedHelpers.findAndHookMethod(ContextWrapper.class, "getSharedPreferences", String.class, int.class, new XC_MethodHook() { @TargetApi(Build.VERSION_CODES.N) @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/XposedInstallerHooker.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/XposedInstallerHooker.java similarity index 76% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/XposedInstallerHooker.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/XposedInstallerHooker.java index 17ca675d..07931306 100644 --- a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/XposedInstallerHooker.java +++ b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/entry/hooker/XposedInstallerHooker.java @@ -9,31 +9,27 @@ import java.io.IOException; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XC_MethodReplacement; import de.robv.android.xposed.XposedBridge; +import de.robv.android.xposed.XposedHelpers; import static com.elderdrivers.riru.edxp.config.InstallerChooser.LEGACY_INSTALLER_PACKAGE_NAME; -import static de.robv.android.xposed.XposedHelpers.callStaticMethod; -import static de.robv.android.xposed.XposedHelpers.findAndHookMethod; -import static de.robv.android.xposed.XposedHelpers.findClass; -import static de.robv.android.xposed.XposedHelpers.getObjectField; -import static de.robv.android.xposed.XposedHelpers.setObjectField; public class XposedInstallerHooker { public static void hookXposedInstaller(ClassLoader classLoader) { try { final String xposedAppClass = LEGACY_INSTALLER_PACKAGE_NAME + ".XposedApp"; - final Class InstallZipUtil = findClass(LEGACY_INSTALLER_PACKAGE_NAME + final Class InstallZipUtil = XposedHelpers.findClass(LEGACY_INSTALLER_PACKAGE_NAME + ".util.InstallZipUtil", classLoader); - findAndHookMethod(xposedAppClass, classLoader, "getActiveXposedVersion", + XposedHelpers.findAndHookMethod(xposedAppClass, classLoader, "getActiveXposedVersion", XC_MethodReplacement.returnConstant(XposedBridge.getXposedVersion())); - findAndHookMethod(xposedAppClass, classLoader, + XposedHelpers.findAndHookMethod(xposedAppClass, classLoader, "reloadXposedProp", new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { Utils.logD("before reloadXposedProp..."); final String propFieldName = "mXposedProp"; final Object thisObject = param.thisObject; - if (getObjectField(thisObject, propFieldName) != null) { + if (XposedHelpers.getObjectField(thisObject, propFieldName) != null) { param.setResult(null); Utils.logD("reloadXposedProp already done, skip..."); return; @@ -42,10 +38,10 @@ public class XposedInstallerHooker { FileInputStream is = null; try { is = new FileInputStream(file); - Object props = callStaticMethod(InstallZipUtil, + Object props = XposedHelpers.callStaticMethod(InstallZipUtil, "parseXposedProp", is); synchronized (thisObject) { - setObjectField(thisObject, propFieldName, props); + XposedHelpers.setObjectField(thisObject, propFieldName, props); } Utils.logD("reloadXposedProp done..."); param.setResult(null); diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/BlackWhiteListProxy.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/BlackWhiteListProxy.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/BlackWhiteListProxy.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/BlackWhiteListProxy.java diff --git a/Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/NormalProxy.java b/edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/NormalProxy.java similarity index 100% rename from Bridge/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/NormalProxy.java rename to edxp-yahfa/src/main/java/com/elderdrivers/riru/edxp/yahfa/proxy/NormalProxy.java diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9a4163a4..4e974715 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/hiddenapistubs/.gitignore b/hiddenapi-stubs/.gitignore similarity index 100% rename from hiddenapistubs/.gitignore rename to hiddenapi-stubs/.gitignore diff --git a/hiddenapistubs/build.gradle b/hiddenapi-stubs/build.gradle similarity index 100% rename from hiddenapistubs/build.gradle rename to hiddenapi-stubs/build.gradle diff --git a/hiddenapistubs/src/main/AndroidManifest.xml b/hiddenapi-stubs/src/main/AndroidManifest.xml similarity index 100% rename from hiddenapistubs/src/main/AndroidManifest.xml rename to hiddenapi-stubs/src/main/AndroidManifest.xml diff --git a/hiddenapistubs/src/main/java/android/app/ActivityThread.java b/hiddenapi-stubs/src/main/java/android/app/ActivityThread.java similarity index 100% rename from hiddenapistubs/src/main/java/android/app/ActivityThread.java rename to hiddenapi-stubs/src/main/java/android/app/ActivityThread.java diff --git a/hiddenapistubs/src/main/java/android/app/LoadedApk.java b/hiddenapi-stubs/src/main/java/android/app/LoadedApk.java similarity index 100% rename from hiddenapistubs/src/main/java/android/app/LoadedApk.java rename to hiddenapi-stubs/src/main/java/android/app/LoadedApk.java diff --git a/hiddenapistubs/src/main/java/android/content/pm/PackageParser.java b/hiddenapi-stubs/src/main/java/android/content/pm/PackageParser.java similarity index 100% rename from hiddenapistubs/src/main/java/android/content/pm/PackageParser.java rename to hiddenapi-stubs/src/main/java/android/content/pm/PackageParser.java diff --git a/hiddenapistubs/src/main/java/android/content/res/AssetManager.java b/hiddenapi-stubs/src/main/java/android/content/res/AssetManager.java similarity index 100% rename from hiddenapistubs/src/main/java/android/content/res/AssetManager.java rename to hiddenapi-stubs/src/main/java/android/content/res/AssetManager.java diff --git a/hiddenapistubs/src/main/java/android/content/res/CompatibilityInfo.java b/hiddenapi-stubs/src/main/java/android/content/res/CompatibilityInfo.java similarity index 100% rename from hiddenapistubs/src/main/java/android/content/res/CompatibilityInfo.java rename to hiddenapi-stubs/src/main/java/android/content/res/CompatibilityInfo.java diff --git a/hiddenapistubs/src/main/java/android/content/res/Resources.java b/hiddenapi-stubs/src/main/java/android/content/res/Resources.java similarity index 100% rename from hiddenapistubs/src/main/java/android/content/res/Resources.java rename to hiddenapi-stubs/src/main/java/android/content/res/Resources.java diff --git a/hiddenapistubs/src/main/java/android/content/res/TypedArray.java b/hiddenapi-stubs/src/main/java/android/content/res/TypedArray.java similarity index 100% rename from hiddenapistubs/src/main/java/android/content/res/TypedArray.java rename to hiddenapi-stubs/src/main/java/android/content/res/TypedArray.java diff --git a/hiddenapistubs/src/main/java/android/os/SELinux.java b/hiddenapi-stubs/src/main/java/android/os/SELinux.java similarity index 100% rename from hiddenapistubs/src/main/java/android/os/SELinux.java rename to hiddenapi-stubs/src/main/java/android/os/SELinux.java diff --git a/hiddenapistubs/src/main/java/android/os/ServiceManager.java b/hiddenapi-stubs/src/main/java/android/os/ServiceManager.java similarity index 100% rename from hiddenapistubs/src/main/java/android/os/ServiceManager.java rename to hiddenapi-stubs/src/main/java/android/os/ServiceManager.java diff --git a/hiddenapistubs/src/main/java/com/android/internal/os/RuntimeInit.java b/hiddenapi-stubs/src/main/java/com/android/internal/os/RuntimeInit.java similarity index 100% rename from hiddenapistubs/src/main/java/com/android/internal/os/RuntimeInit.java rename to hiddenapi-stubs/src/main/java/com/android/internal/os/RuntimeInit.java diff --git a/hiddenapistubs/src/main/java/com/android/internal/os/ZygoteInit.java b/hiddenapi-stubs/src/main/java/com/android/internal/os/ZygoteInit.java similarity index 100% rename from hiddenapistubs/src/main/java/com/android/internal/os/ZygoteInit.java rename to hiddenapi-stubs/src/main/java/com/android/internal/os/ZygoteInit.java diff --git a/hiddenapistubs/src/main/java/com/android/internal/util/XmlUtils.java b/hiddenapi-stubs/src/main/java/com/android/internal/util/XmlUtils.java similarity index 100% rename from hiddenapistubs/src/main/java/com/android/internal/util/XmlUtils.java rename to hiddenapi-stubs/src/main/java/com/android/internal/util/XmlUtils.java diff --git a/hiddenapistubs/src/main/java/dalvik/system/BaseDexClassLoader.java b/hiddenapi-stubs/src/main/java/dalvik/system/BaseDexClassLoader.java similarity index 100% rename from hiddenapistubs/src/main/java/dalvik/system/BaseDexClassLoader.java rename to hiddenapi-stubs/src/main/java/dalvik/system/BaseDexClassLoader.java diff --git a/hiddenapistubs/src/main/java/xposed/dummy/XResourcesSuperClass.java b/hiddenapi-stubs/src/main/java/xposed/dummy/XResourcesSuperClass.java similarity index 100% rename from hiddenapistubs/src/main/java/xposed/dummy/XResourcesSuperClass.java rename to hiddenapi-stubs/src/main/java/xposed/dummy/XResourcesSuperClass.java diff --git a/hiddenapistubs/src/main/java/xposed/dummy/XTypedArraySuperClass.java b/hiddenapi-stubs/src/main/java/xposed/dummy/XTypedArraySuperClass.java similarity index 100% rename from hiddenapistubs/src/main/java/xposed/dummy/XTypedArraySuperClass.java rename to hiddenapi-stubs/src/main/java/xposed/dummy/XTypedArraySuperClass.java diff --git a/settings.gradle b/settings.gradle index d61f9317..0608b9f8 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':Core', ':Bridge', ':hiddenapistubs', ':dexmaker', ':dalvikdx' \ No newline at end of file +include ':edxp-core', ':xposed-bridge', ':hiddenapi-stubs', ':dexmaker', ':dalvikdx', ':edxp-yahfa' \ No newline at end of file diff --git a/xposed-bridge/.gitignore b/xposed-bridge/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/xposed-bridge/.gitignore @@ -0,0 +1 @@ +/build diff --git a/xposed-bridge/build.gradle b/xposed-bridge/build.gradle new file mode 100644 index 00000000..6ae23f5d --- /dev/null +++ b/xposed-bridge/build.gradle @@ -0,0 +1,54 @@ +apply plugin: 'com.android.library' + +android { + compileSdkVersion 28 + buildToolsVersion '28.0.3' + + defaultConfig { + multiDexEnabled false + minSdkVersion 23 + } + + sourceSets { + main { + java.srcDirs += ['src/main/apacheCommonsLang'] + } + } + + buildTypes { + release { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +// Make sure that hiddenapistubs are placed before the Android SDK in xposed-bridge.iml +// as there doesn't seem to be any way to configure this in Android Studio. +preBuild.doLast { + def imlFile = file(project.name + ".iml") + println 'Change ' + project.name + '.iml order' + try { + def parsedXml = (new groovy.util.XmlParser()).parse(imlFile) + def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' } + parsedXml.component[1].remove(jdkNode) + def sdkString = "Android API " + android.compileSdkVersion.substring("android-".length()) + " Platform" + new groovy.util.Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK']) + groovy.xml.XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile)) + } catch (FileNotFoundException e) { + // nop, iml not found + } +} + +dependencies { + compileOnly files("libs/framework-stub.jar") + compileOnly project(':dexmaker') +} + +afterEvaluate { + + tasks.withType(JavaCompile) { + options.compilerArgs.add("-Xbootclasspath/p:${projectDir.absolutePath}/libs/framework-stub.jar") + } + +} \ No newline at end of file diff --git a/xposed-bridge/libs/framework-stub.jar b/xposed-bridge/libs/framework-stub.jar new file mode 100644 index 0000000000000000000000000000000000000000..36cd86b3c4fd658ed66ff5195ae0cc54d6ebc485 GIT binary patch literal 15295 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 SP*C)sAAQg^FUtb{>;D0!&FVP- literal 0 HcmV?d00001 diff --git a/xposed-bridge/proguard-rules.pro b/xposed-bridge/proguard-rules.pro new file mode 100644 index 00000000..e72d685a --- /dev/null +++ b/xposed-bridge/proguard-rules.pro @@ -0,0 +1,25 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile + +-dontobfuscate +-keep class de.robv.android.xposed.** {*;} +-keep class android.** { *; } \ No newline at end of file diff --git a/Bridge/src/main/AndroidManifest.xml b/xposed-bridge/src/main/AndroidManifest.xml similarity index 100% rename from Bridge/src/main/AndroidManifest.xml rename to xposed-bridge/src/main/AndroidManifest.xml diff --git a/Bridge/src/main/apacheCommonsLang/LICENSE.txt b/xposed-bridge/src/main/apacheCommonsLang/LICENSE.txt similarity index 100% rename from Bridge/src/main/apacheCommonsLang/LICENSE.txt rename to xposed-bridge/src/main/apacheCommonsLang/LICENSE.txt diff --git a/Bridge/src/main/apacheCommonsLang/MODIFICATIONS.txt b/xposed-bridge/src/main/apacheCommonsLang/MODIFICATIONS.txt similarity index 100% rename from Bridge/src/main/apacheCommonsLang/MODIFICATIONS.txt rename to xposed-bridge/src/main/apacheCommonsLang/MODIFICATIONS.txt diff --git a/Bridge/src/main/apacheCommonsLang/NOTICE.txt b/xposed-bridge/src/main/apacheCommonsLang/NOTICE.txt similarity index 100% rename from Bridge/src/main/apacheCommonsLang/NOTICE.txt rename to xposed-bridge/src/main/apacheCommonsLang/NOTICE.txt diff --git a/Bridge/src/main/apacheCommonsLang/RELEASE-NOTES.txt b/xposed-bridge/src/main/apacheCommonsLang/RELEASE-NOTES.txt similarity index 100% rename from Bridge/src/main/apacheCommonsLang/RELEASE-NOTES.txt rename to xposed-bridge/src/main/apacheCommonsLang/RELEASE-NOTES.txt diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/ArrayUtils.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/ArrayUtils.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/ArrayUtils.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/ArrayUtils.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/CharSequenceUtils.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/CharSequenceUtils.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/CharSequenceUtils.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/CharSequenceUtils.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/CharUtils.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/CharUtils.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/CharUtils.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/CharUtils.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/ClassUtils.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/ClassUtils.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/ClassUtils.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/ClassUtils.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/JavaVersion.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/JavaVersion.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/JavaVersion.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/JavaVersion.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/ObjectUtils.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/ObjectUtils.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/ObjectUtils.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/ObjectUtils.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/StringUtils.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/StringUtils.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/StringUtils.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/StringUtils.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/SystemUtils.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/SystemUtils.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/SystemUtils.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/SystemUtils.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/Validate.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/Validate.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/Validate.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/Validate.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/Builder.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/Builder.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/Builder.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/Builder.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/CompareToBuilder.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/CompareToBuilder.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/CompareToBuilder.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/CompareToBuilder.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/EqualsBuilder.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/EqualsBuilder.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/EqualsBuilder.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/EqualsBuilder.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/HashCodeBuilder.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/HashCodeBuilder.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/HashCodeBuilder.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/HashCodeBuilder.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/IDKey.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/IDKey.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/IDKey.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/IDKey.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/ReflectionToStringBuilder.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/ToStringBuilder.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/ToStringBuilder.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/ToStringBuilder.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/ToStringBuilder.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/ToStringStyle.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/ToStringStyle.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/ToStringStyle.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/ToStringStyle.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/package.html b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/package.html similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/package.html rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/builder/package.html diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/exception/CloneFailedException.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/exception/CloneFailedException.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/exception/CloneFailedException.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/exception/CloneFailedException.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/exception/package.html b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/exception/package.html similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/exception/package.html rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/exception/package.html diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/mutable/Mutable.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/mutable/Mutable.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/mutable/Mutable.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/mutable/Mutable.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/mutable/MutableInt.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/mutable/MutableInt.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/mutable/MutableInt.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/mutable/MutableInt.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/mutable/package.html b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/mutable/package.html similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/mutable/package.html rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/mutable/package.html diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/overview.html b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/overview.html similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/overview.html rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/overview.html diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/package.html b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/package.html similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/package.html rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/package.html diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/reflect/MemberUtils.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/reflect/MemberUtils.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/reflect/MemberUtils.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/reflect/MemberUtils.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/reflect/MethodUtils.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/reflect/MethodUtils.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/reflect/MethodUtils.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/reflect/MethodUtils.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/reflect/package.html b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/reflect/package.html similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/reflect/package.html rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/reflect/package.html diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/tuple/ImmutablePair.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/tuple/ImmutablePair.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/tuple/ImmutablePair.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/tuple/ImmutablePair.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/tuple/Pair.java b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/tuple/Pair.java similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/tuple/Pair.java rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/tuple/Pair.java diff --git a/Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/tuple/package.html b/xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/tuple/package.html similarity index 100% rename from Bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/tuple/package.html rename to xposed-bridge/src/main/apacheCommonsLang/external/org/apache/commons/lang3/tuple/package.html diff --git a/Bridge/src/main/java/android/app/AndroidAppHelper.java b/xposed-bridge/src/main/java/android/app/AndroidAppHelper.java similarity index 100% rename from Bridge/src/main/java/android/app/AndroidAppHelper.java rename to xposed-bridge/src/main/java/android/app/AndroidAppHelper.java diff --git a/Bridge/src/main/java/android/app/package-info.java b/xposed-bridge/src/main/java/android/app/package-info.java similarity index 100% rename from Bridge/src/main/java/android/app/package-info.java rename to xposed-bridge/src/main/java/android/app/package-info.java diff --git a/Bridge/src/main/java/android/content/res/XModuleResources.java b/xposed-bridge/src/main/java/android/content/res/XModuleResources.java similarity index 100% rename from Bridge/src/main/java/android/content/res/XModuleResources.java rename to xposed-bridge/src/main/java/android/content/res/XModuleResources.java diff --git a/Bridge/src/main/java/android/content/res/XResForwarder.java b/xposed-bridge/src/main/java/android/content/res/XResForwarder.java similarity index 100% rename from Bridge/src/main/java/android/content/res/XResForwarder.java rename to xposed-bridge/src/main/java/android/content/res/XResForwarder.java diff --git a/Bridge/src/main/java/android/content/res/XResources.java b/xposed-bridge/src/main/java/android/content/res/XResources.java similarity index 100% rename from Bridge/src/main/java/android/content/res/XResources.java rename to xposed-bridge/src/main/java/android/content/res/XResources.java diff --git a/Bridge/src/main/java/android/content/res/package-info.java b/xposed-bridge/src/main/java/android/content/res/package-info.java similarity index 100% rename from Bridge/src/main/java/android/content/res/package-info.java rename to xposed-bridge/src/main/java/android/content/res/package-info.java diff --git a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfig.java b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfig.java new file mode 100644 index 00000000..9ec66244 --- /dev/null +++ b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfig.java @@ -0,0 +1,12 @@ +package com.elderdrivers.riru.edxp.config; + +public interface EdXpConfig { + + + String getInstallerBaseDir(); + + String getBlackListModulePackageName(); + + boolean isDynamicModulesMode(); + +} diff --git a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfigGlobal.java b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfigGlobal.java new file mode 100644 index 00000000..6fc716b2 --- /dev/null +++ b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdXpConfigGlobal.java @@ -0,0 +1,72 @@ +package com.elderdrivers.riru.edxp.config; + +import com.elderdrivers.riru.edxp.hook.HookProvider; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Member; + +import de.robv.android.xposed.XposedBridge; + +public class EdXpConfigGlobal { + + public static volatile EdXpConfig sConfig; + public static volatile HookProvider sHookProvider; + + public static EdXpConfig getConfig() { + if (sConfig == null) { + return defaultConfig; + } + return sConfig; + } + + public static HookProvider getHookProvider() { + if (sHookProvider == null) { + return defaultHookProvider; + } + return sHookProvider; + } + + + private static final EdXpConfig defaultConfig = new EdXpConfig() { + + @Override + public String getInstallerBaseDir() { + return ""; + } + + @Override + public String getBlackListModulePackageName() { + return ""; + } + + @Override + public boolean isDynamicModulesMode() { + return false; + } + }; + + + private static final HookProvider defaultHookProvider = new HookProvider() { + + @Override + public void hookMethod(Member method, XposedBridge.AdditionalHookInfo additionalInfo) { + + } + + @Override + public Object invokeOriginalMethod(Member method, Object thisObject, Object[] args) + throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { + return null; + } + + @Override + public Member findMethodNative(Member hookMethod) { + return hookMethod; + } + + @Override + public void deoptMethods(String packageName, ClassLoader classLoader) { + + } + }; +} diff --git a/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java new file mode 100644 index 00000000..f2f553f0 --- /dev/null +++ b/xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/hook/HookProvider.java @@ -0,0 +1,17 @@ +package com.elderdrivers.riru.edxp.hook; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Member; + +import de.robv.android.xposed.XposedBridge; + +public interface HookProvider { + + void hookMethod(Member method, XposedBridge.AdditionalHookInfo additionalInfo); + + Object invokeOriginalMethod(Member method, Object thisObject, Object[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException; + + Member findMethodNative(Member hookMethod); + + void deoptMethods(String packageName, ClassLoader classLoader); +} diff --git a/Bridge/src/main/java/de/robv/android/xposed/DexCreator.java b/xposed-bridge/src/main/java/de/robv/android/xposed/DexCreator.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/DexCreator.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/DexCreator.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/IXposedHookCmdInit.java b/xposed-bridge/src/main/java/de/robv/android/xposed/IXposedHookCmdInit.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/IXposedHookCmdInit.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/IXposedHookCmdInit.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/IXposedHookInitPackageResources.java b/xposed-bridge/src/main/java/de/robv/android/xposed/IXposedHookInitPackageResources.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/IXposedHookInitPackageResources.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/IXposedHookInitPackageResources.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/IXposedHookLoadPackage.java b/xposed-bridge/src/main/java/de/robv/android/xposed/IXposedHookLoadPackage.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/IXposedHookLoadPackage.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/IXposedHookLoadPackage.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/IXposedHookZygoteInit.java b/xposed-bridge/src/main/java/de/robv/android/xposed/IXposedHookZygoteInit.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/IXposedHookZygoteInit.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/IXposedHookZygoteInit.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/IXposedMod.java b/xposed-bridge/src/main/java/de/robv/android/xposed/IXposedMod.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/IXposedMod.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/IXposedMod.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/SELinuxHelper.java b/xposed-bridge/src/main/java/de/robv/android/xposed/SELinuxHelper.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/SELinuxHelper.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/SELinuxHelper.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/XC_MethodHook.java b/xposed-bridge/src/main/java/de/robv/android/xposed/XC_MethodHook.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/XC_MethodHook.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/XC_MethodHook.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/XC_MethodReplacement.java b/xposed-bridge/src/main/java/de/robv/android/xposed/XC_MethodReplacement.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/XC_MethodReplacement.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/XC_MethodReplacement.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/XSharedPreferences.java b/xposed-bridge/src/main/java/de/robv/android/xposed/XSharedPreferences.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/XSharedPreferences.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/XSharedPreferences.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/XposedBridge.java b/xposed-bridge/src/main/java/de/robv/android/xposed/XposedBridge.java similarity index 95% rename from Bridge/src/main/java/de/robv/android/xposed/XposedBridge.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/XposedBridge.java index 95758d63..25abdc04 100644 --- a/Bridge/src/main/java/de/robv/android/xposed/XposedBridge.java +++ b/xposed-bridge/src/main/java/de/robv/android/xposed/XposedBridge.java @@ -3,9 +3,7 @@ package de.robv.android.xposed; import android.annotation.SuppressLint; import android.util.Log; -import com.elderdrivers.riru.edxp.yahfa.core.HookMain; -import com.elderdrivers.riru.edxp.yahfa.dexmaker.DynamicBridge; -import com.elderdrivers.riru.edxp.yahfa.dexmaker.MethodInfo; +import com.elderdrivers.riru.edxp.config.EdXpConfigGlobal; import java.io.File; import java.io.IOException; @@ -198,15 +196,7 @@ public final class XposedBridge { } AdditionalHookInfo additionalInfo = new AdditionalHookInfo(callbacks, parameterTypes, returnType); - MethodInfo methodInfo = new MethodInfo(hookMethod); - declaringClass = methodInfo.getClassForSure(); - Member reflectMethod = (Member) HookMain.findMethod( - declaringClass, methodInfo.methodName, methodInfo.methodSig); - if (reflectMethod == null) { - Log.e(TAG, "method not found: name=" - + methodInfo.methodName + ", sig=" + methodInfo.methodSig); - reflectMethod = hookMethod; - } + Member reflectMethod = EdXpConfigGlobal.getHookProvider().findMethodNative(hookMethod); hookMethodNative(reflectMethod, declaringClass, slot, additionalInfo); } @@ -405,7 +395,7 @@ public final class XposedBridge { */ private synchronized static void hookMethodNative(final Member method, Class declaringClass, int slot, final Object additionalInfoObj) { - DynamicBridge.hookMethod(method, (AdditionalHookInfo) additionalInfoObj); + EdXpConfigGlobal.getHookProvider().hookMethod(method, (AdditionalHookInfo) additionalInfoObj); } private static Object invokeOriginalMethodNative(Member method, int methodId, @@ -413,7 +403,7 @@ public final class XposedBridge { Class returnType, Object thisObject, Object[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { - return DynamicBridge.invokeOriginalMethod(method, thisObject, args); + return EdXpConfigGlobal.getHookProvider().invokeOriginalMethod(method, thisObject, args); } /** diff --git a/Bridge/src/main/java/de/robv/android/xposed/XposedHelpers.java b/xposed-bridge/src/main/java/de/robv/android/xposed/XposedHelpers.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/XposedHelpers.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/XposedHelpers.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/XposedInit.java b/xposed-bridge/src/main/java/de/robv/android/xposed/XposedInit.java similarity index 87% rename from Bridge/src/main/java/de/robv/android/xposed/XposedInit.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/XposedInit.java index 9e53b3cd..bba953fd 100644 --- a/Bridge/src/main/java/de/robv/android/xposed/XposedInit.java +++ b/xposed-bridge/src/main/java/de/robv/android/xposed/XposedInit.java @@ -1,14 +1,11 @@ package de.robv.android.xposed; -import android.app.AndroidAppHelper; import android.os.Build; import android.text.TextUtils; import android.util.Log; import com.android.internal.os.ZygoteInit; -import com.elderdrivers.riru.edxp.config.ConfigManager; -import com.elderdrivers.riru.edxp.yahfa.entry.Router; -import com.elderdrivers.riru.edxp.util.Utils; +import com.elderdrivers.riru.edxp.config.EdXpConfigGlobal; import java.io.BufferedReader; import java.io.File; @@ -24,8 +21,6 @@ import dalvik.system.DexFile; import dalvik.system.PathClassLoader; import de.robv.android.xposed.services.BaseService; -import static com.elderdrivers.riru.edxp.config.InstallerChooser.INSTALLER_DATA_BASE_DIR; -import static com.elderdrivers.riru.edxp.yahfa.entry.hooker.XposedBlackListHooker.BLACK_LIST_PACKAGE_NAME; import static de.robv.android.xposed.XposedHelpers.closeSilently; import static de.robv.android.xposed.XposedHelpers.findClass; import static de.robv.android.xposed.XposedHelpers.findFieldIfExists; @@ -45,18 +40,11 @@ public final class XposedInit { private XposedInit() { } - private static volatile AtomicBoolean bootstrapHooked = new AtomicBoolean(false); - /** * Hook some methods which we want to create an easier interface for developers. */ /*package*/ public static void initForZygote(boolean isSystem) throws Throwable { - if (!bootstrapHooked.compareAndSet(false, true)) { - return; - } - Router.startBootstrapHook(isSystem); - // TODO Are these still needed for us? // MIUI if (findFieldIfExists(ZygoteInit.class, "BOOT_START_TIME") != null) { @@ -90,12 +78,12 @@ public final class XposedInit { public static void loadModules(boolean isInZygote) throws IOException { boolean hasLoaded = !modulesLoaded.compareAndSet(false, true); // dynamic module list mode doesn't apply to loading in zygote - if (hasLoaded && (isInZygote || !ConfigManager.isDynamicModulesMode())) { + if (hasLoaded && (isInZygote || !EdXpConfigGlobal.getConfig().isDynamicModulesMode())) { return; } // FIXME module list is cleared but never could be reload again when using dynamic-module-list under multi-user environment XposedBridge.clearLoadedPackages(); - final String filename = INSTALLER_DATA_BASE_DIR + "conf/modules.list"; + final String filename = EdXpConfigGlobal.getConfig().getInstallerBaseDir() + "conf/modules.list"; BaseService service = SELinuxHelper.getAppDataFileService(); if (!service.checkFileExists(filename)) { Log.e(TAG, "Cannot load any modules because " + filename + " was not found"); @@ -125,7 +113,10 @@ public final class XposedInit { private static void loadModule(String apk, ClassLoader topClassLoader) { Log.i(TAG, "Loading modules from " + apk); - if (!TextUtils.isEmpty(apk) && apk.contains(BLACK_LIST_PACKAGE_NAME)) { + // todo remove this legacy logic + String blackListModulePackageName = EdXpConfigGlobal.getConfig().getBlackListModulePackageName(); + if (!TextUtils.isEmpty(apk) && !TextUtils.isEmpty(blackListModulePackageName) + && apk.contains(blackListModulePackageName)) { Log.i(TAG, "We are going to take over black list's job..."); return; } @@ -233,14 +224,4 @@ public final class XposedInit { } public final static HashSet loadedPackagesInProcess = new HashSet<>(1); - - public static void logD(String prefix) { - Utils.logD(String.format("%s: pkg=%s, prc=%s", prefix, AndroidAppHelper.currentPackageName(), - AndroidAppHelper.currentProcessName())); - } - - public static void logE(String prefix, Throwable throwable) { - Utils.logE(String.format("%s: pkg=%s, prc=%s", prefix, AndroidAppHelper.currentPackageName(), - AndroidAppHelper.currentProcessName()), throwable); - } } diff --git a/Bridge/src/main/java/de/robv/android/xposed/callbacks/IXUnhook.java b/xposed-bridge/src/main/java/de/robv/android/xposed/callbacks/IXUnhook.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/callbacks/IXUnhook.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/callbacks/IXUnhook.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/callbacks/XC_InitPackageResources.java b/xposed-bridge/src/main/java/de/robv/android/xposed/callbacks/XC_InitPackageResources.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/callbacks/XC_InitPackageResources.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/callbacks/XC_InitPackageResources.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/callbacks/XC_LayoutInflated.java b/xposed-bridge/src/main/java/de/robv/android/xposed/callbacks/XC_LayoutInflated.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/callbacks/XC_LayoutInflated.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/callbacks/XC_LayoutInflated.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/callbacks/XC_LoadPackage.java b/xposed-bridge/src/main/java/de/robv/android/xposed/callbacks/XC_LoadPackage.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/callbacks/XC_LoadPackage.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/callbacks/XC_LoadPackage.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/callbacks/XCallback.java b/xposed-bridge/src/main/java/de/robv/android/xposed/callbacks/XCallback.java similarity index 96% rename from Bridge/src/main/java/de/robv/android/xposed/callbacks/XCallback.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/callbacks/XCallback.java index 8e17e916..b8976e57 100644 --- a/Bridge/src/main/java/de/robv/android/xposed/callbacks/XCallback.java +++ b/xposed-bridge/src/main/java/de/robv/android/xposed/callbacks/XCallback.java @@ -2,7 +2,7 @@ package de.robv.android.xposed.callbacks; import android.os.Bundle; -import com.elderdrivers.riru.edxp.util.PrebuiltMethodsDeopter; +import com.elderdrivers.riru.edxp.config.EdXpConfigGlobal; import java.io.Serializable; @@ -105,7 +105,7 @@ public abstract class XCallback implements Comparable { // deopt methods in system apps or priv-apps, this would be not necessary // only if we found out how to recompile their apks XC_LoadPackage.LoadPackageParam lpp = (XC_LoadPackage.LoadPackageParam) param; - PrebuiltMethodsDeopter.deoptMethods(lpp.packageName, lpp.classLoader); + EdXpConfigGlobal.getHookProvider().deoptMethods(lpp.packageName, lpp.classLoader); } if (param.callbacks == null) diff --git a/Bridge/src/main/java/de/robv/android/xposed/callbacks/package-info.java b/xposed-bridge/src/main/java/de/robv/android/xposed/callbacks/package-info.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/callbacks/package-info.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/callbacks/package-info.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/package-info.java b/xposed-bridge/src/main/java/de/robv/android/xposed/package-info.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/package-info.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/package-info.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/services/BaseService.java b/xposed-bridge/src/main/java/de/robv/android/xposed/services/BaseService.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/services/BaseService.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/services/BaseService.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/services/BinderService.java b/xposed-bridge/src/main/java/de/robv/android/xposed/services/BinderService.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/services/BinderService.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/services/BinderService.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/services/DirectAccessService.java b/xposed-bridge/src/main/java/de/robv/android/xposed/services/DirectAccessService.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/services/DirectAccessService.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/services/DirectAccessService.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/services/FileResult.java b/xposed-bridge/src/main/java/de/robv/android/xposed/services/FileResult.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/services/FileResult.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/services/FileResult.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/services/ZygoteService.java b/xposed-bridge/src/main/java/de/robv/android/xposed/services/ZygoteService.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/services/ZygoteService.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/services/ZygoteService.java diff --git a/Bridge/src/main/java/de/robv/android/xposed/services/package-info.java b/xposed-bridge/src/main/java/de/robv/android/xposed/services/package-info.java similarity index 100% rename from Bridge/src/main/java/de/robv/android/xposed/services/package-info.java rename to xposed-bridge/src/main/java/de/robv/android/xposed/services/package-info.java