Resetting the library file path
Prevent some software from detecting EdXposed It works with latest SafetyNet! Now allows each installation to be a unique Xposed framework Completely erasing certain single, fixed features of the Xposed framework
This commit is contained in:
parent
1979856752
commit
e905664403
|
|
@ -19,6 +19,11 @@ public class BaseEdxpConfig implements EdxpConfig {
|
||||||
return ConfigManager.getInstallerPackageName();
|
return ConfigManager.getInstallerPackageName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getXposedPropPath() {
|
||||||
|
return ConfigManager.getXposedPropPath();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isDynamicModulesMode() {
|
public boolean isDynamicModulesMode() {
|
||||||
return ConfigManager.isDynamicModulesEnabled();
|
return ConfigManager.isDynamicModulesEnabled();
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,8 @@ public class ConfigManager {
|
||||||
|
|
||||||
public static native String getInstallerPackageName();
|
public static native String getInstallerPackageName();
|
||||||
|
|
||||||
|
public static native String getXposedPropPath();
|
||||||
|
|
||||||
public static native String getInstallerConfigPath(String suffix);
|
public static native String getInstallerConfigPath(String suffix);
|
||||||
|
|
||||||
public static native String getDataPathPrefix();
|
public static native String getDataPathPrefix();
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.elderdrivers.riru.edxp.hooker;
|
package com.elderdrivers.riru.edxp.hooker;
|
||||||
|
|
||||||
|
import com.elderdrivers.riru.edxp.config.ConfigManager;
|
||||||
import com.elderdrivers.riru.edxp.util.Utils;
|
import com.elderdrivers.riru.edxp.util.Utils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
@ -37,7 +38,7 @@ public class XposedInstallerHooker {
|
||||||
Utils.logD("reloadXposedProp already done, skip...");
|
Utils.logD("reloadXposedProp already done, skip...");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
File file = new File("/system/framework/edconfig.jar");
|
File file = new File(ConfigManager.getXposedPropPath());
|
||||||
FileInputStream is = null;
|
FileInputStream is = null;
|
||||||
try {
|
try {
|
||||||
is = new FileInputStream(file);
|
is = new FileInputStream(file);
|
||||||
|
|
|
||||||
|
|
@ -187,6 +187,10 @@ namespace edxp {
|
||||||
return installer_pkg_name_;
|
return installer_pkg_name_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ALWAYS_INLINE std::string ConfigManager::GetXposedPropPath() const {
|
||||||
|
return kXposedPropPath;
|
||||||
|
}
|
||||||
|
|
||||||
ALWAYS_INLINE std::string ConfigManager::GetDataPathPrefix() const {
|
ALWAYS_INLINE std::string ConfigManager::GetDataPathPrefix() const {
|
||||||
return data_path_prefix_;
|
return data_path_prefix_;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ namespace edxp {
|
||||||
|
|
||||||
static constexpr const char *kPrimaryInstallerPkgName = "org.meowcat.edxposed.manager";
|
static constexpr const char *kPrimaryInstallerPkgName = "org.meowcat.edxposed.manager";
|
||||||
static constexpr const char *kLegacyInstallerPkgName = "de.robv.android.xposed.installer";
|
static constexpr const char *kLegacyInstallerPkgName = "de.robv.android.xposed.installer";
|
||||||
|
static constexpr auto kXposedPropPath = "/system/framework/edconfig.jar";
|
||||||
|
|
||||||
class ConfigManager {
|
class ConfigManager {
|
||||||
public:
|
public:
|
||||||
|
|
@ -33,6 +34,8 @@ namespace edxp {
|
||||||
|
|
||||||
std::string GetInstallerPackageName() const;
|
std::string GetInstallerPackageName() const;
|
||||||
|
|
||||||
|
std::string GetXposedPropPath() const;
|
||||||
|
|
||||||
std::string GetDataPathPrefix() const;
|
std::string GetDataPathPrefix() const;
|
||||||
|
|
||||||
std::string GetConfigPath(const std::string &suffix) const;
|
std::string GetConfigPath(const std::string &suffix) const;
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,10 @@ namespace edxp {
|
||||||
return env->NewStringUTF(ConfigManager::GetInstance()->GetInstallerPackageName().c_str());
|
return env->NewStringUTF(ConfigManager::GetInstance()->GetInstallerPackageName().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static jstring ConfigManager_getXposedPropPath(JNI_START) {
|
||||||
|
return env->NewStringUTF(ConfigManager::GetInstance()->GetXposedPropPath().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
static jstring ConfigManager_getDataPathPrefix(JNI_START) {
|
static jstring ConfigManager_getDataPathPrefix(JNI_START) {
|
||||||
return env->NewStringUTF(ConfigManager::GetInstance()->GetDataPathPrefix().c_str());
|
return env->NewStringUTF(ConfigManager::GetInstance()->GetDataPathPrefix().c_str());
|
||||||
}
|
}
|
||||||
|
|
@ -56,6 +60,7 @@ namespace edxp {
|
||||||
NATIVE_METHOD(ConfigManager, isDeoptBootImageEnabled, "()Z"),
|
NATIVE_METHOD(ConfigManager, isDeoptBootImageEnabled, "()Z"),
|
||||||
NATIVE_METHOD(ConfigManager, isNoModuleLogEnabled, "()Z"),
|
NATIVE_METHOD(ConfigManager, isNoModuleLogEnabled, "()Z"),
|
||||||
NATIVE_METHOD(ConfigManager, getInstallerPackageName, "()Ljava/lang/String;"),
|
NATIVE_METHOD(ConfigManager, getInstallerPackageName, "()Ljava/lang/String;"),
|
||||||
|
NATIVE_METHOD(ConfigManager, getXposedPropPath, "()Ljava/lang/String;"),
|
||||||
NATIVE_METHOD(ConfigManager, getDataPathPrefix, "()Ljava/lang/String;"),
|
NATIVE_METHOD(ConfigManager, getDataPathPrefix, "()Ljava/lang/String;"),
|
||||||
NATIVE_METHOD(ConfigManager, getInstallerConfigPath, "(Ljava/lang/String;)Ljava/lang/String;"),
|
NATIVE_METHOD(ConfigManager, getInstallerConfigPath, "(Ljava/lang/String;)Ljava/lang/String;"),
|
||||||
NATIVE_METHOD(ConfigManager, isAppNeedHook, "(Ljava/lang/String;)Z"),
|
NATIVE_METHOD(ConfigManager, isAppNeedHook, "(Ljava/lang/String;)Z"),
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,11 @@ PROP_PRODUCT=$(getprop ro.build.product)
|
||||||
PROP_BRAND=$(getprop ro.product.brand)
|
PROP_BRAND=$(getprop ro.product.brand)
|
||||||
PROP_MANUFACTURER=$(getprop ro.product.manufacturer)
|
PROP_MANUFACTURER=$(getprop ro.product.manufacturer)
|
||||||
|
|
||||||
|
JAR_EDXP=$(cat /proc/sys/kernel/random/uuid|md5sum|cut -c 1-8)".jar"
|
||||||
|
JAR_EDDALVIKDX=$(cat /proc/sys/kernel/random/uuid|md5sum|cut -c 1-8)".jar"
|
||||||
|
JAR_EDDEXMAKER=$(cat /proc/sys/kernel/random/uuid|md5sum|cut -c 1-8)".jar"
|
||||||
|
JAR_EDCONFIG=$(cat /proc/sys/kernel/random/uuid|md5sum|cut -c 1-8)".jar"
|
||||||
|
|
||||||
MODEL="
|
MODEL="
|
||||||
HD1900
|
HD1900
|
||||||
HD1910
|
HD1910
|
||||||
|
|
@ -200,6 +205,12 @@ check_architecture
|
||||||
ui_print "- Extracting module files"
|
ui_print "- Extracting module files"
|
||||||
unzip -o "${ZIPFILE}" EdXposed.apk module.prop post-fs-data.sh sepolicy.rule system.prop uninstall.sh 'system/*' -d "${MODPATH}" >&2
|
unzip -o "${ZIPFILE}" EdXposed.apk module.prop post-fs-data.sh sepolicy.rule system.prop uninstall.sh 'system/*' -d "${MODPATH}" >&2
|
||||||
|
|
||||||
|
ui_print "- Copying framework libraries"
|
||||||
|
mv "${MODPATH}/system/framework/eddalvikdx.jar" "${MODPATH}/system/framework/${JAR_EDDALVIKDX}"
|
||||||
|
mv "${MODPATH}/system/framework/edxp.jar" "${MODPATH}/system/framework/${JAR_EDXP}"
|
||||||
|
mv "${MODPATH}/system/framework/eddexmaker.jar" "${MODPATH}/system/framework/${JAR_EDDEXMAKER}"
|
||||||
|
mv "${MODPATH}/system/framework/edconfig.jar" "${MODPATH}/system/framework/${JAR_EDCONFIG}"
|
||||||
|
|
||||||
if [[ "${ARCH}" == "x86" || "${ARCH}" == "x64" ]]; then
|
if [[ "${ARCH}" == "x86" || "${ARCH}" == "x64" ]]; then
|
||||||
ui_print "- Replacing x86 and x86_64 libraries"
|
ui_print "- Replacing x86 and x86_64 libraries"
|
||||||
unzip -o "${ZIPFILE}" 'system_x86/*' -d "${MODPATH}" >&2
|
unzip -o "${ZIPFILE}" 'system_x86/*' -d "${MODPATH}" >&2
|
||||||
|
|
@ -221,7 +232,7 @@ fi
|
||||||
|
|
||||||
if [[ ${BOOTMODE} == true && ${NO_MANAGER} == true ]]; then
|
if [[ ${BOOTMODE} == true && ${NO_MANAGER} == true ]]; then
|
||||||
ui_print "- Installing stub apk"
|
ui_print "- Installing stub apk"
|
||||||
cp -f "${MODPATH}"/EdXposed.apk /data/local/tmp/
|
cp -f "${MODPATH}/EdXposed.apk" /data/local/tmp/
|
||||||
pm install /data/local/tmp/EdXposed.apk 2>&2
|
pm install /data/local/tmp/EdXposed.apk 2>&2
|
||||||
rm -rf /data/local/tmp/EdXposed.apk
|
rm -rf /data/local/tmp/EdXposed.apk
|
||||||
fi
|
fi
|
||||||
|
|
@ -231,14 +242,24 @@ if [[ "${OLD_MAGISK}" == true ]]; then
|
||||||
rm "${MODPATH}"/sepolicy.rule
|
rm "${MODPATH}"/sepolicy.rule
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "- Mounted persist:" >&2
|
#echo "- Mounted persist:" >&2
|
||||||
mount | grep persist >&2
|
#mount | grep persist >&2
|
||||||
|
|
||||||
#if [[ "${NO_PERSIST}" == true ]]; then
|
#if [[ "${NO_PERSIST}" == true ]]; then
|
||||||
# ui_print "- Persist not detected, remove SEPolicy rule"
|
# ui_print "- Persist not detected, remove SEPolicy rule"
|
||||||
# rm ${MODPATH}/sepolicy.rule
|
# rm ${MODPATH}/sepolicy.rule
|
||||||
#fi
|
#fi
|
||||||
|
|
||||||
|
ui_print "- Resetting libraries path"
|
||||||
|
|
||||||
|
sed -i 's:/system/framework/edxp.jar\:/system/framework/eddalvikdx.jar\:/system/framework/eddexmaker.jar:/system/framework/'"${JAR_EDXP}"'\:/system/framework/'"${JAR_EDDALVIKDX}"'\:/system/framework/'"${JAR_EDDEXMAKER}"':g' "${MODPATH}/system/lib/libriru_edxp.so"
|
||||||
|
sed -i 's:/system/framework/edconfig.jar:/system/framework/'"${JAR_EDCONFIG}"':g' "${MODPATH}/system/lib/libriru_edxp.so"
|
||||||
|
|
||||||
|
if [[ "${IS64BIT}" == true ]]; then
|
||||||
|
sed -i 's:/system/framework/edxp.jar\:/system/framework/eddalvikdx.jar\:/system/framework/eddexmaker.jar:/system/framework/'"${JAR_EDXP}"'\:/system/framework/'"${JAR_EDDALVIKDX}"'\:/system/framework/'"${JAR_EDDEXMAKER}"':g' "${MODPATH}/system/lib64/libriru_edxp.so"
|
||||||
|
sed -i 's:/system/framework/edconfig.jar:/system/framework/'"${JAR_EDCONFIG}"':g' "${MODPATH}/system/lib64/libriru_edxp.so"
|
||||||
|
fi
|
||||||
|
|
||||||
ui_print "- Copying extra files"
|
ui_print "- Copying extra files"
|
||||||
|
|
||||||
TARGET="${RIRU_PATH}/modules/edxp"
|
TARGET="${RIRU_PATH}/modules/edxp"
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@ public interface EdxpConfig {
|
||||||
|
|
||||||
String getInstallerPackageName();
|
String getInstallerPackageName();
|
||||||
|
|
||||||
|
String getXposedPropPath();
|
||||||
|
|
||||||
boolean isDynamicModulesMode();
|
boolean isDynamicModulesMode();
|
||||||
|
|
||||||
boolean isNoModuleLogEnabled();
|
boolean isNoModuleLogEnabled();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue