Add hide whitelist packages
System server (uid <= 1000) will auto pass Still need to report more whitelist packages to make the features work **Turn on hide feature at your own risk**
This commit is contained in:
parent
cf60e6a4ec
commit
2d63aa9951
|
|
@ -12,6 +12,7 @@ import java.io.File;
|
|||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import de.robv.android.xposed.IXposedHookLoadPackage;
|
||||
|
|
@ -32,6 +33,18 @@ public class Enhancement implements IXposedHookLoadPackage {
|
|||
|
||||
private static final String LEGACY_INSTALLER = "de.robv.android.xposed.installer";
|
||||
|
||||
private static final List HIDE_WHITE_LIST = Arrays.asList( // TODO: more whitelist packages
|
||||
APPLICATION_ID, // Whitelist or crash
|
||||
"com.android.providers.downloads", // For download modules
|
||||
"com.android.providers.downloads.ui",
|
||||
"com.android.packageinstaller", // For uninstall EdXposed Manager
|
||||
"com.google.android.packageinstaller",
|
||||
"com.android.systemui", // For notifications
|
||||
"com.android.permissioncontroller", // For permissions grant
|
||||
"com.topjohnwu.magisk", // For superuser root grant
|
||||
"eu.chainfire.supersu"
|
||||
); // System server (uid <= 1000) will auto pass
|
||||
|
||||
private static List modulesList = null;
|
||||
|
||||
private static boolean getFlagState(int user, String flag) {
|
||||
|
|
@ -79,12 +92,16 @@ public class Enhancement implements IXposedHookLoadPackage {
|
|||
protected void afterHookedMethod(MethodHookParam param) {
|
||||
if (param.args != null && param.args[0] != null) {
|
||||
final int userId = (int) param.args[1];
|
||||
final int packageUid = Binder.getCallingUid();
|
||||
|
||||
boolean isXposedModule = false;
|
||||
final String[] packages =
|
||||
(String[]) XposedHelpers.callMethod(param.thisObject, "getPackagesForUid", Binder.getCallingUid());
|
||||
(String[]) XposedHelpers.callMethod(param.thisObject, "getPackagesForUid", packageUid);
|
||||
if (packages == null || packages.length == 0 || packageUid <= 1000) {
|
||||
return;
|
||||
}
|
||||
for (String packageName : packages) {
|
||||
if (packageName.equals(APPLICATION_ID)) {
|
||||
if (HIDE_WHITE_LIST.contains(packageName)) {
|
||||
return;
|
||||
}
|
||||
if (getModulesList(userId).contains(packageName)) {
|
||||
|
|
@ -107,7 +124,7 @@ public class Enhancement implements IXposedHookLoadPackage {
|
|||
} else {
|
||||
if (getFlagState(userId, mHideEdXposedManagerFlag)) {
|
||||
for (ApplicationInfo applicationInfo : applicationInfoList) {
|
||||
if (applicationInfo.packageName.equals(APPLICATION_ID)) {
|
||||
if (applicationInfo.packageName.equals(APPLICATION_ID) || applicationInfo.packageName.equals(LEGACY_INSTALLER)) {
|
||||
applicationInfoList.remove(applicationInfo);
|
||||
break;
|
||||
}
|
||||
|
|
@ -124,12 +141,16 @@ public class Enhancement implements IXposedHookLoadPackage {
|
|||
protected void afterHookedMethod(MethodHookParam param) {
|
||||
if (param.args != null && param.args[0] != null) {
|
||||
final int userId = (int) param.args[1];
|
||||
final int packageUid = Binder.getCallingUid();
|
||||
|
||||
boolean isXposedModule = false;
|
||||
final String[] packages =
|
||||
(String[]) XposedHelpers.callMethod(param.thisObject, "getPackagesForUid", Binder.getCallingUid());
|
||||
(String[]) XposedHelpers.callMethod(param.thisObject, "getPackagesForUid", packageUid);
|
||||
if (packages == null || packages.length == 0 || packageUid <= 1000) {
|
||||
return;
|
||||
}
|
||||
for (String packageName : packages) {
|
||||
if (packageName.equals(APPLICATION_ID)) {
|
||||
if (HIDE_WHITE_LIST.contains(packageName)) {
|
||||
return;
|
||||
}
|
||||
if (getModulesList(userId).contains(packageName)) {
|
||||
|
|
@ -152,7 +173,7 @@ public class Enhancement implements IXposedHookLoadPackage {
|
|||
} else {
|
||||
if (getFlagState(userId, mHideEdXposedManagerFlag)) {
|
||||
for (PackageInfo packageInfo : packageInfoList) {
|
||||
if (packageInfo.packageName.equals(APPLICATION_ID)) {
|
||||
if (packageInfo.packageName.equals(APPLICATION_ID) || packageInfo.packageName.equals(LEGACY_INSTALLER)) {
|
||||
packageInfoList.remove(packageInfo);
|
||||
break;
|
||||
}
|
||||
|
|
@ -169,12 +190,16 @@ public class Enhancement implements IXposedHookLoadPackage {
|
|||
protected void beforeHookedMethod(MethodHookParam param) {
|
||||
if (param.args != null && param.args[0] != null) {
|
||||
final int userId = (int) param.args[2];
|
||||
final int packageUid = Binder.getCallingUid();
|
||||
|
||||
boolean isXposedModule = false;
|
||||
final String[] packages =
|
||||
(String[]) XposedHelpers.callMethod(param.thisObject, "getPackagesForUid", Binder.getCallingUid());
|
||||
(String[]) XposedHelpers.callMethod(param.thisObject, "getPackagesForUid", packageUid);
|
||||
if (packages == null || packages.length == 0 || packageUid <= 1000) {
|
||||
return;
|
||||
}
|
||||
for (String packageName : packages) {
|
||||
if (packageName.equals(APPLICATION_ID)) {
|
||||
if (HIDE_WHITE_LIST.contains(packageName)) {
|
||||
return;
|
||||
}
|
||||
if (getModulesList(userId).contains(packageName)) {
|
||||
|
|
@ -191,7 +216,7 @@ public class Enhancement implements IXposedHookLoadPackage {
|
|||
}
|
||||
} else {
|
||||
if (getFlagState(userId, mHideEdXposedManagerFlag)) {
|
||||
if (param.args[0].equals(APPLICATION_ID)) {
|
||||
if (param.args[0].equals(APPLICATION_ID) || param.args[0].equals(LEGACY_INSTALLER)) {
|
||||
param.setResult(null);
|
||||
}
|
||||
}
|
||||
|
|
@ -206,12 +231,16 @@ public class Enhancement implements IXposedHookLoadPackage {
|
|||
protected void beforeHookedMethod(MethodHookParam param) {
|
||||
if (param.args != null && param.args[0] != null) {
|
||||
final int userId = (int) param.args[2];
|
||||
final int packageUid = Binder.getCallingUid();
|
||||
|
||||
boolean isXposedModule = false;
|
||||
final String[] packages =
|
||||
(String[]) XposedHelpers.callMethod(param.thisObject, "getPackagesForUid", Binder.getCallingUid());
|
||||
(String[]) XposedHelpers.callMethod(param.thisObject, "getPackagesForUid", packageUid);
|
||||
if (packages == null || packages.length == 0 || packageUid <= 1000) {
|
||||
return;
|
||||
}
|
||||
for (String packageName : packages) {
|
||||
if (packageName.equals(APPLICATION_ID)) {
|
||||
if (HIDE_WHITE_LIST.contains(packageName)) {
|
||||
return;
|
||||
}
|
||||
if (getModulesList(userId).contains(packageName)) {
|
||||
|
|
@ -228,7 +257,7 @@ public class Enhancement implements IXposedHookLoadPackage {
|
|||
}
|
||||
} else {
|
||||
if (getFlagState(userId, mHideEdXposedManagerFlag)) {
|
||||
if (param.args[0].equals(APPLICATION_ID)) {
|
||||
if (param.args[0].equals(APPLICATION_ID) || param.args[0].equals(LEGACY_INSTALLER)) {
|
||||
param.setResult(null);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -302,6 +302,7 @@
|
|||
<string name="colorized_action_bar">着色应用栏</string>
|
||||
<string name="settings_group_theme">主题</string>
|
||||
<string name="material_design_2">惨白设计</string>
|
||||
<string name="version_x">版本 %d</string>
|
||||
<string name="xposed_description">启用 EdXposed 的增强功能:\n - 判断 Xposed 是否正常工作\n - 移除针对 EdXposed 的后台限制\n - 假装安装了 Xposed Installer\n - 隐藏 EdXposed Manager</string>
|
||||
<string name="status_enhancement">增强模式已激活</string>
|
||||
<string name="settings_group_enhancement">增强模式</string>
|
||||
|
|
@ -309,7 +310,7 @@
|
|||
<string name="settings_summary_enhancement">未激活\n你可以在「模块」中启用增强模块</string>
|
||||
<string name="settings_summary_enhancement_enabled">已激活</string>
|
||||
<string name="settings_title_pretend_xposed_installer">Xposed Installer 伪装</string>
|
||||
<string name="settings_summary_pretend_xposed_installer">假装已安装 Xposed Installer 来使一些过时但有用的模块正常工作\n注:开启此功能可能会被某些软件(如 RootBeer)检测到 EdXposed</string>
|
||||
<string name="settings_summary_pretend_xposed_installer">假装已安装 Xposed Installer 来使一些过时但有用的模块正常工作\n仅对「模块」中已启用模块生效\n注:开启此功能可能会被某些软件(如 RootBeer)检测到 EdXposed</string>
|
||||
<string name="settings_title_hide_edxposed_manager">隐藏 EdXposed Manager</string>
|
||||
<string name="settings_summary_hide_edxposed_manager">防止软件检测到 EdXposed Manager\n注:模块可能无法正常打开 Manager 界面</string>
|
||||
<string name="settings_summary_hide_edxposed_manager">防止软件检测到 EdXposed Manager\n注:模块可能无法正常打开 EdXposed Manager 界面,系统中关于 EdXposed Manager 的一些功能可能无法正常使用</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -333,6 +333,7 @@
|
|||
<string name="colorized_action_bar">Colorized action bar</string>
|
||||
<string name="settings_group_theme">Theme</string>
|
||||
<string name="material_design_2">Material Design 2</string>
|
||||
<string name="version_x">Version %d</string>
|
||||
<string name="xposed_description">Enable EdXposed enhancements:\nRemove background restrictions on EdXposed\nDetermine if Xposed is working properly\nPretend to have Xposed Installer installed\nHide EdXposed Manager</string>
|
||||
<string name="status_enhancement">Enhancement mode</string>
|
||||
<string name="settings_group_enhancement">Enhancement mode</string>
|
||||
|
|
@ -340,8 +341,7 @@
|
|||
<string name="settings_summary_enhancement">Disabled\nYou can enable enhancement mode in the module</string>
|
||||
<string name="settings_summary_enhancement_enabled">Enabled</string>
|
||||
<string name="settings_title_pretend_xposed_installer">Pretend to have Xposed Installer installed</string>
|
||||
<string name="settings_summary_pretend_xposed_installer">Pretend that Xposed Installer is installed to make some outdated but useful modules work\nWARNING: Some software (eg. RootBeer) may detect that EdXposed when this function is turned on</string>
|
||||
<string name="settings_summary_pretend_xposed_installer">Pretend that Xposed Installer is installed to make some outdated but useful modules work\nOnly work for the enabled modules in \"Modules\"\nWARNING: Some software (eg. RootBeer) may detect that EdXposed when this function is turned on</string>
|
||||
<string name="settings_title_hide_edxposed_manager">Hide EdXposed Manager</string>
|
||||
<string name="settings_summary_hide_edxposed_manager">Prevent the software from detecting EdXposed Manager\nWARNING: Modules may not be able to start the Manager UI properly</string>
|
||||
<string name="version_x">Version %d</string>
|
||||
<string name="settings_summary_hide_edxposed_manager">Prevent the software from detecting EdXposed Manager\nWARNING: Modules may not be able to start the EdXposed Manager UI properly, some fratures of EdXposed Manager in the system may not work properly</string>
|
||||
</resources>
|
||||
|
|
|
|||
Loading…
Reference in New Issue