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:
Jim Wu 2020-04-04 11:55:17 +08:00
parent 1979856752
commit e905664403
8 changed files with 47 additions and 4 deletions

View File

@ -19,6 +19,11 @@ public class BaseEdxpConfig implements EdxpConfig {
return ConfigManager.getInstallerPackageName();
}
@Override
public String getXposedPropPath() {
return ConfigManager.getXposedPropPath();
}
@Override
public boolean isDynamicModulesMode() {
return ConfigManager.isDynamicModulesEnabled();

View File

@ -39,6 +39,8 @@ public class ConfigManager {
public static native String getInstallerPackageName();
public static native String getXposedPropPath();
public static native String getInstallerConfigPath(String suffix);
public static native String getDataPathPrefix();

View File

@ -1,5 +1,6 @@
package com.elderdrivers.riru.edxp.hooker;
import com.elderdrivers.riru.edxp.config.ConfigManager;
import com.elderdrivers.riru.edxp.util.Utils;
import java.io.File;
@ -37,7 +38,7 @@ public class XposedInstallerHooker {
Utils.logD("reloadXposedProp already done, skip...");
return;
}
File file = new File("/system/framework/edconfig.jar");
File file = new File(ConfigManager.getXposedPropPath());
FileInputStream is = null;
try {
is = new FileInputStream(file);

View File

@ -187,6 +187,10 @@ namespace edxp {
return installer_pkg_name_;
}
ALWAYS_INLINE std::string ConfigManager::GetXposedPropPath() const {
return kXposedPropPath;
}
ALWAYS_INLINE std::string ConfigManager::GetDataPathPrefix() const {
return data_path_prefix_;
}

View File

@ -10,6 +10,7 @@ namespace edxp {
static constexpr const char *kPrimaryInstallerPkgName = "org.meowcat.edxposed.manager";
static constexpr const char *kLegacyInstallerPkgName = "de.robv.android.xposed.installer";
static constexpr auto kXposedPropPath = "/system/framework/edconfig.jar";
class ConfigManager {
public:
@ -33,6 +34,8 @@ namespace edxp {
std::string GetInstallerPackageName() const;
std::string GetXposedPropPath() const;
std::string GetDataPathPrefix() const;
std::string GetConfigPath(const std::string &suffix) const;

View File

@ -30,6 +30,10 @@ namespace edxp {
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) {
return env->NewStringUTF(ConfigManager::GetInstance()->GetDataPathPrefix().c_str());
}
@ -56,6 +60,7 @@ namespace edxp {
NATIVE_METHOD(ConfigManager, isDeoptBootImageEnabled, "()Z"),
NATIVE_METHOD(ConfigManager, isNoModuleLogEnabled, "()Z"),
NATIVE_METHOD(ConfigManager, getInstallerPackageName, "()Ljava/lang/String;"),
NATIVE_METHOD(ConfigManager, getXposedPropPath, "()Ljava/lang/String;"),
NATIVE_METHOD(ConfigManager, getDataPathPrefix, "()Ljava/lang/String;"),
NATIVE_METHOD(ConfigManager, getInstallerConfigPath, "(Ljava/lang/String;)Ljava/lang/String;"),
NATIVE_METHOD(ConfigManager, isAppNeedHook, "(Ljava/lang/String;)Z"),

View File

@ -11,6 +11,11 @@ PROP_PRODUCT=$(getprop ro.build.product)
PROP_BRAND=$(getprop ro.product.brand)
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="
HD1900
HD1910
@ -200,6 +205,12 @@ check_architecture
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
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
ui_print "- Replacing x86 and x86_64 libraries"
unzip -o "${ZIPFILE}" 'system_x86/*' -d "${MODPATH}" >&2
@ -221,7 +232,7 @@ fi
if [[ ${BOOTMODE} == true && ${NO_MANAGER} == true ]]; then
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
rm -rf /data/local/tmp/EdXposed.apk
fi
@ -231,14 +242,24 @@ if [[ "${OLD_MAGISK}" == true ]]; then
rm "${MODPATH}"/sepolicy.rule
fi
echo "- Mounted persist:" >&2
mount | grep persist >&2
#echo "- Mounted persist:" >&2
#mount | grep persist >&2
#if [[ "${NO_PERSIST}" == true ]]; then
# ui_print "- Persist not detected, remove SEPolicy rule"
# rm ${MODPATH}/sepolicy.rule
#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"
TARGET="${RIRU_PATH}/modules/edxp"

View File

@ -8,6 +8,8 @@ public interface EdxpConfig {
String getInstallerPackageName();
String getXposedPropPath();
boolean isDynamicModulesMode();
boolean isNoModuleLogEnabled();