Skip to content

Commit e905664

Browse files
committed
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
1 parent 1979856 commit e905664

File tree

8 files changed

+47
-4
lines changed

8 files changed

+47
-4
lines changed

edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/BaseEdxpConfig.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ public String getInstallerPackageName() {
1919
return ConfigManager.getInstallerPackageName();
2020
}
2121

22+
@Override
23+
public String getXposedPropPath() {
24+
return ConfigManager.getXposedPropPath();
25+
}
26+
2227
@Override
2328
public boolean isDynamicModulesMode() {
2429
return ConfigManager.isDynamicModulesEnabled();

edxp-common/src/main/java/com/elderdrivers/riru/edxp/config/ConfigManager.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ private static boolean isFileExists(String path) {
3939

4040
public static native String getInstallerPackageName();
4141

42+
public static native String getXposedPropPath();
43+
4244
public static native String getInstallerConfigPath(String suffix);
4345

4446
public static native String getDataPathPrefix();

edxp-common/src/main/java/com/elderdrivers/riru/edxp/hooker/XposedInstallerHooker.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.elderdrivers.riru.edxp.hooker;
22

3+
import com.elderdrivers.riru.edxp.config.ConfigManager;
34
import com.elderdrivers.riru.edxp.util.Utils;
45

56
import java.io.File;
@@ -37,7 +38,7 @@ protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
3738
Utils.logD("reloadXposedProp already done, skip...");
3839
return;
3940
}
40-
File file = new File("/system/framework/edconfig.jar");
41+
File file = new File(ConfigManager.getXposedPropPath());
4142
FileInputStream is = null;
4243
try {
4344
is = new FileInputStream(file);

edxp-core/src/main/cpp/main/src/config_manager.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,10 @@ namespace edxp {
187187
return installer_pkg_name_;
188188
}
189189

190+
ALWAYS_INLINE std::string ConfigManager::GetXposedPropPath() const {
191+
return kXposedPropPath;
192+
}
193+
190194
ALWAYS_INLINE std::string ConfigManager::GetDataPathPrefix() const {
191195
return data_path_prefix_;
192196
}

edxp-core/src/main/cpp/main/src/config_manager.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ namespace edxp {
1010

1111
static constexpr const char *kPrimaryInstallerPkgName = "org.meowcat.edxposed.manager";
1212
static constexpr const char *kLegacyInstallerPkgName = "de.robv.android.xposed.installer";
13+
static constexpr auto kXposedPropPath = "/system/framework/edconfig.jar";
1314

1415
class ConfigManager {
1516
public:
@@ -33,6 +34,8 @@ namespace edxp {
3334

3435
std::string GetInstallerPackageName() const;
3536

37+
std::string GetXposedPropPath() const;
38+
3639
std::string GetDataPathPrefix() const;
3740

3841
std::string GetConfigPath(const std::string &suffix) const;

edxp-core/src/main/cpp/main/src/jni/edxp_config_manager.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ namespace edxp {
3030
return env->NewStringUTF(ConfigManager::GetInstance()->GetInstallerPackageName().c_str());
3131
}
3232

33+
static jstring ConfigManager_getXposedPropPath(JNI_START) {
34+
return env->NewStringUTF(ConfigManager::GetInstance()->GetXposedPropPath().c_str());
35+
}
36+
3337
static jstring ConfigManager_getDataPathPrefix(JNI_START) {
3438
return env->NewStringUTF(ConfigManager::GetInstance()->GetDataPathPrefix().c_str());
3539
}
@@ -56,6 +60,7 @@ namespace edxp {
5660
NATIVE_METHOD(ConfigManager, isDeoptBootImageEnabled, "()Z"),
5761
NATIVE_METHOD(ConfigManager, isNoModuleLogEnabled, "()Z"),
5862
NATIVE_METHOD(ConfigManager, getInstallerPackageName, "()Ljava/lang/String;"),
63+
NATIVE_METHOD(ConfigManager, getXposedPropPath, "()Ljava/lang/String;"),
5964
NATIVE_METHOD(ConfigManager, getDataPathPrefix, "()Ljava/lang/String;"),
6065
NATIVE_METHOD(ConfigManager, getInstallerConfigPath, "(Ljava/lang/String;)Ljava/lang/String;"),
6166
NATIVE_METHOD(ConfigManager, isAppNeedHook, "(Ljava/lang/String;)Z"),

edxp-core/template_override/customize.sh

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ PROP_PRODUCT=$(getprop ro.build.product)
1111
PROP_BRAND=$(getprop ro.product.brand)
1212
PROP_MANUFACTURER=$(getprop ro.product.manufacturer)
1313

14+
JAR_EDXP=$(cat /proc/sys/kernel/random/uuid|md5sum|cut -c 1-8)".jar"
15+
JAR_EDDALVIKDX=$(cat /proc/sys/kernel/random/uuid|md5sum|cut -c 1-8)".jar"
16+
JAR_EDDEXMAKER=$(cat /proc/sys/kernel/random/uuid|md5sum|cut -c 1-8)".jar"
17+
JAR_EDCONFIG=$(cat /proc/sys/kernel/random/uuid|md5sum|cut -c 1-8)".jar"
18+
1419
MODEL="
1520
HD1900
1621
HD1910
@@ -200,6 +205,12 @@ check_architecture
200205
ui_print "- Extracting module files"
201206
unzip -o "${ZIPFILE}" EdXposed.apk module.prop post-fs-data.sh sepolicy.rule system.prop uninstall.sh 'system/*' -d "${MODPATH}" >&2
202207

208+
ui_print "- Copying framework libraries"
209+
mv "${MODPATH}/system/framework/eddalvikdx.jar" "${MODPATH}/system/framework/${JAR_EDDALVIKDX}"
210+
mv "${MODPATH}/system/framework/edxp.jar" "${MODPATH}/system/framework/${JAR_EDXP}"
211+
mv "${MODPATH}/system/framework/eddexmaker.jar" "${MODPATH}/system/framework/${JAR_EDDEXMAKER}"
212+
mv "${MODPATH}/system/framework/edconfig.jar" "${MODPATH}/system/framework/${JAR_EDCONFIG}"
213+
203214
if [[ "${ARCH}" == "x86" || "${ARCH}" == "x64" ]]; then
204215
ui_print "- Replacing x86 and x86_64 libraries"
205216
unzip -o "${ZIPFILE}" 'system_x86/*' -d "${MODPATH}" >&2
@@ -221,7 +232,7 @@ fi
221232

222233
if [[ ${BOOTMODE} == true && ${NO_MANAGER} == true ]]; then
223234
ui_print "- Installing stub apk"
224-
cp -f "${MODPATH}"/EdXposed.apk /data/local/tmp/
235+
cp -f "${MODPATH}/EdXposed.apk" /data/local/tmp/
225236
pm install /data/local/tmp/EdXposed.apk 2>&2
226237
rm -rf /data/local/tmp/EdXposed.apk
227238
fi
@@ -231,14 +242,24 @@ if [[ "${OLD_MAGISK}" == true ]]; then
231242
rm "${MODPATH}"/sepolicy.rule
232243
fi
233244

234-
echo "- Mounted persist:" >&2
235-
mount | grep persist >&2
245+
#echo "- Mounted persist:" >&2
246+
#mount | grep persist >&2
236247

237248
#if [[ "${NO_PERSIST}" == true ]]; then
238249
# ui_print "- Persist not detected, remove SEPolicy rule"
239250
# rm ${MODPATH}/sepolicy.rule
240251
#fi
241252

253+
ui_print "- Resetting libraries path"
254+
255+
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"
256+
sed -i 's:/system/framework/edconfig.jar:/system/framework/'"${JAR_EDCONFIG}"':g' "${MODPATH}/system/lib/libriru_edxp.so"
257+
258+
if [[ "${IS64BIT}" == true ]]; then
259+
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"
260+
sed -i 's:/system/framework/edconfig.jar:/system/framework/'"${JAR_EDCONFIG}"':g' "${MODPATH}/system/lib64/libriru_edxp.so"
261+
fi
262+
242263
ui_print "- Copying extra files"
243264

244265
TARGET="${RIRU_PATH}/modules/edxp"

xposed-bridge/src/main/java/com/elderdrivers/riru/edxp/config/EdxpConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ public interface EdxpConfig {
88

99
String getInstallerPackageName();
1010

11+
String getXposedPropPath();
12+
1113
boolean isDynamicModulesMode();
1214

1315
boolean isNoModuleLogEnabled();

0 commit comments

Comments
 (0)