diff --git a/README.md b/README.md index fdd45652..2314df52 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,15 @@ Attension: Xposed API version lower than 93 is NOT supported due to a permission ## Compilation This project uses Hidden API, so you should replace android.jar in Android Studio. [Reference](https://github.com/anggrayudi/android-hidden-api) ## Update Log +V1.3.1 ++ Performance optimization + V1.3 + Downgrade minSdkVersion + Add new detection methods and interception methods + Modifying templates takes effect in real time without restarting target apps (except for file detections) + UI redesign with more help information in about page + Due to the big changes to V1.1, if there are problems please uninstall and reinstall the module -+ Remove old hook mode and abandon trying to support virtual frameworks V1.1 + Add exclude self support @@ -27,17 +29,20 @@ V1.1 同时可作为Xposed模块用于隐藏应用列表或特定应用,保护你的隐私。 注意:由于一个权限问题,Xposed API至少为93才能正常使用该模块 ## 更新日志 +V1.3.1 ++ 性能优化 + V1.3 + 支持更低Android版本 + 增加新的检测方式和拦截方式 + 修改模板实时生效,无需重启目标应用(除File detections) + UI重修,关于页面添加更多使用帮助 + 由于较V1.1改动大,遇到问题请卸载重装模块 -+ 移除旧的工作模式,放弃支持虚拟框架 V1.1 + 增加了排除自身功能 ## TODO ++ Solve MODE_WORLDREADABLE problem + Downgrade Xposed API version + Fix webview problems \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 64dad304..862358d7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,8 +12,8 @@ android { applicationId "com.tsng.hidemyapplist" minSdkVersion 24 targetSdkVersion 30 - versionCode 9 - versionName "1.3" + versionCode 10 + versionName "1.3.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/tsng/hidemyapplist/xposed/hooks/PackageManagerService.kt b/app/src/main/java/com/tsng/hidemyapplist/xposed/hooks/PackageManagerService.kt index 653266e6..72b06017 100644 --- a/app/src/main/java/com/tsng/hidemyapplist/xposed/hooks/PackageManagerService.kt +++ b/app/src/main/java/com/tsng/hidemyapplist/xposed/hooks/PackageManagerService.kt @@ -2,6 +2,7 @@ package com.tsng.hidemyapplist.xposed.hooks import android.content.pm.ParceledListSlice import android.os.Binder +import android.os.Process import com.tsng.hidemyapplist.xposed.XposedUtils.Companion.APPNAME import com.tsng.hidemyapplist.xposed.XposedUtils.Companion.getRecursiveField import com.tsng.hidemyapplist.xposed.XposedUtils.Companion.getTemplatePref @@ -39,7 +40,9 @@ class PackageManagerService : IXposedHookLoadPackage { "getPackageUid" -> setResult(method, "ID detections", -1) "getPackagesForUid" -> XposedBridge.hookMethod(method, object : XC_MethodHook() { override fun afterHookedMethod(param: MethodHookParam) { - val callerName = XposedHelpers.callMethod(param.thisObject, "getNameForUid", Binder.getCallingUid()) as String + val callerUid = Binder.getCallingUid() + if (callerUid <= Process.SYSTEM_UID) return + val callerName = XposedHelpers.callMethod(param.thisObject, "getNameForUid", callerUid) as String val pref = getTemplatePref(callerName) if (!isUseHook(pref, callerName, "ID detections")) return ld("PKMS caller: $callerName") @@ -61,7 +64,9 @@ class PackageManagerService : IXposedHookLoadPackage { private fun removeList(method: Method, hookName: String, pkgNameObjList: List) { XposedBridge.hookMethod(method, object : XC_MethodHook() { override fun afterHookedMethod(param: MethodHookParam) { - val callerName = XposedHelpers.callMethod(param.thisObject, "getNameForUid", Binder.getCallingUid()) as String + val callerUid = Binder.getCallingUid() + if (callerUid <= Process.SYSTEM_UID) return + val callerName = XposedHelpers.callMethod(param.thisObject, "getNameForUid", callerUid) as String val pref = getTemplatePref(callerName) if (!isUseHook(pref, callerName, hookName)) return ld("PKMS caller: $callerName") @@ -77,7 +82,9 @@ class PackageManagerService : IXposedHookLoadPackage { private fun setResult(method: Method, hookName: String, result: Any?) { XposedBridge.hookMethod(method, object : XC_MethodHook() { override fun afterHookedMethod(param: MethodHookParam) { - val callerName = XposedHelpers.callMethod(param.thisObject, "getNameForUid", Binder.getCallingUid()) as String + val callerUid = Binder.getCallingUid() + if (callerUid <= Process.SYSTEM_UID) return + val callerName = XposedHelpers.callMethod(param.thisObject, "getNameForUid", callerUid) as String if (callerName == APPNAME && param.args[0] == "checkHMAServiceStatus") { param.result = 1 return diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 780f4e23..870d1147 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -13,13 +13,14 @@ 新版本特性 请仔细阅读关于页面的使用帮助!\n + V1.3.1\n + [+] 性能优化\n V1.3\n [+] 支持更低Android版本\n [+] 增加新的检测方式和拦截方式\n [+] 修改模板实时生效,无需重启目标应用(除File detections)\n [+] UI重修,关于页面添加更多使用帮助\n [+] 由于较V1.1改动大,遇到问题请卸载重装模块\n - [-] 移除旧的工作模式,放弃支持虚拟框架\n [%] nativeFile拦截尚未完成\n 目前已知的bug\nEdXposed YAHFA后端无法进行file detection隐藏(测试版本:4683),请更换Sandhook后端或LSPosed。\n diff --git a/app/src/main/res/values-zh-rCN/strings_about.xml b/app/src/main/res/values-zh-rCN/strings_about.xml index a5ee32e4..c9a30bfd 100644 --- a/app/src/main/res/values-zh-rCN/strings_about.xml +++ b/app/src/main/res/values-zh-rCN/strings_about.xml @@ -6,7 +6,7 @@ 如何使用该模块 - #激活和更新#\n  安装/更新模块后需要重启。另外,本模块不支持虚拟框架。(如果有人能够解决MODE_WORLD_READABLE问题欢迎联系我) + #激活和更新#\n  安装/更新模块后需要重启。另外,本模块暂时不支持虚拟框架。 #如何启用隐藏#\n  首先在模板管理里创建一个模板,然后在选择生效应用里对目标应用启用模板。Xposed模块作用域需要勾选“Android 系统”,如需拦截文件检测还需要勾选目标APP。(不要勾多了,会卡!) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1edc8923..5e25ebeb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -13,13 +13,14 @@ New features Please read the about page carefully!\n + V1.3.1\n + [+] Performance optimization\n V1.3\n [+] Downgrade minSdkVersion\n [+] Add new detection methods and interception methods\n [+] Modifying templates takes effect in real time without restarting target apps (except for file detections)\n [+] UI redesign with more help information in about page\n [+] Due to the big changes to V1.1, if there are problems please uninstall and reinstall the module\n - [-] Remove old hook mode and abandon trying to support virtual frameworks\n [@] nativeFile interception has not been completed, wait for next updates\n Known bugs\nUnder Edxposed YAHFA file detection hide does not work. (test version: 4683), please switch to Sandhook or LSPosed instead.\n diff --git a/app/src/main/res/values/strings_about.xml b/app/src/main/res/values/strings_about.xml index 98a79c3d..55186202 100644 --- a/app/src/main/res/values/strings_about.xml +++ b/app/src/main/res/values/strings_about.xml @@ -6,7 +6,7 @@ How to use this module - #Activation and updates#\nNeed to reboot after installation and updates. In addition, virtual Xposed frameworks are not supported. (If anyone knows how to deal with MODE_WORLD_READABLE welcome to put a GitHub issue) + #Activation and updates#\nNeed to reboot after installation and updates. In addition, virtual Xposed frameworks are not supported currently. #How to enable hide#\nFirst create a template in Manage Templates, then apply the template in Select Effective Apps. You should check Android System in Xposed module scope/whitelist. For file detections interception, you should check target apps extra. (Do not check many: it makes you device slower)