Resetting the library so path
Prevent some software from detecting EdXposed (2/2) 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
fe8e2c7e85
commit
fd7b17f090
|
|
@ -23,6 +23,14 @@ public class BaseEdxpConfig implements EdxpConfig {
|
|||
public String getXposedPropPath() {
|
||||
return ConfigManager.getXposedPropPath();
|
||||
}
|
||||
@Override
|
||||
public String getLibSandHookName() {
|
||||
return ConfigManager.getLibSandHookName();
|
||||
}
|
||||
@Override
|
||||
public String getLibWhaleName() {
|
||||
return ConfigManager.getLibWhaleName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDynamicModulesMode() {
|
||||
|
|
|
|||
|
|
@ -41,6 +41,10 @@ public class ConfigManager {
|
|||
|
||||
public static native String getXposedPropPath();
|
||||
|
||||
public static native String getLibSandHookName();
|
||||
|
||||
public static native String getLibWhaleName();
|
||||
|
||||
public static native String getInstallerConfigPath(String suffix);
|
||||
|
||||
public static native String getDataPathPrefix();
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@ namespace edxp {
|
|||
|
||||
static constexpr auto kLibArtName = "libart.so";
|
||||
static constexpr auto kLibFwkName = "libandroid_runtime.so";
|
||||
static constexpr auto kLibWhaleName = "libwhale.edxp.so";
|
||||
static constexpr auto kLibSandHookName = "libsandhook.edxp.so";
|
||||
|
||||
static const auto kLibBasePath = std::string(LP_SELECT("/system/lib/", "/system/lib64/"));
|
||||
static const auto kLibRuntimeBasePath = std::string(
|
||||
|
|
@ -36,8 +38,9 @@ namespace edxp {
|
|||
|
||||
static const auto kLibArtPath =
|
||||
(GetAndroidApiLevel() >= ANDROID_Q ? kLibRuntimeBasePath : kLibBasePath) + kLibArtName;
|
||||
static const auto kLibWhalePath = kLibBasePath + "libwhale.edxp.so";
|
||||
static const auto kLibSandHookPath = kLibBasePath + "libsandhook.edxp.so";
|
||||
|
||||
static const auto kLibWhalePath = kLibBasePath + kLibWhaleName;
|
||||
static const auto kLibSandHookPath = kLibBasePath + kLibSandHookName;
|
||||
static const auto kLibFwPath = kLibBasePath + "libandroidfw.so";
|
||||
static const auto kLibDlPath = kLibBasePath + "libdl.so";
|
||||
static const auto kLibFwkPath = kLibBasePath + kLibFwkName;
|
||||
|
|
|
|||
|
|
@ -191,6 +191,14 @@ namespace edxp {
|
|||
return kXposedPropPath;
|
||||
}
|
||||
|
||||
ALWAYS_INLINE std::string ConfigManager::GetLibSandHookName() const {
|
||||
return kLibSandHookName;
|
||||
}
|
||||
|
||||
ALWAYS_INLINE std::string ConfigManager::GetLibWhaleName() const {
|
||||
return kLibWhaleName;
|
||||
}
|
||||
|
||||
ALWAYS_INLINE std::string ConfigManager::GetDataPathPrefix() const {
|
||||
return data_path_prefix_;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,6 +36,10 @@ namespace edxp {
|
|||
|
||||
std::string GetXposedPropPath() const;
|
||||
|
||||
std::string GetLibSandHookName() const;
|
||||
|
||||
std::string GetLibWhaleName() const;
|
||||
|
||||
std::string GetDataPathPrefix() const;
|
||||
|
||||
std::string GetConfigPath(const std::string &suffix) const;
|
||||
|
|
|
|||
|
|
@ -34,6 +34,14 @@ namespace edxp {
|
|||
return env->NewStringUTF(ConfigManager::GetInstance()->GetXposedPropPath().c_str());
|
||||
}
|
||||
|
||||
static jstring ConfigManager_getLibWhaleName(JNI_START) {
|
||||
return env->NewStringUTF(ConfigManager::GetInstance()->GetLibWhaleName().c_str());
|
||||
}
|
||||
|
||||
static jstring ConfigManager_getLibSandHookName(JNI_START) {
|
||||
return env->NewStringUTF(ConfigManager::GetInstance()->GetLibSandHookName().c_str());
|
||||
}
|
||||
|
||||
static jstring ConfigManager_getDataPathPrefix(JNI_START) {
|
||||
return env->NewStringUTF(ConfigManager::GetInstance()->GetDataPathPrefix().c_str());
|
||||
}
|
||||
|
|
@ -61,6 +69,8 @@ namespace edxp {
|
|||
NATIVE_METHOD(ConfigManager, isNoModuleLogEnabled, "()Z"),
|
||||
NATIVE_METHOD(ConfigManager, getInstallerPackageName, "()Ljava/lang/String;"),
|
||||
NATIVE_METHOD(ConfigManager, getXposedPropPath, "()Ljava/lang/String;"),
|
||||
NATIVE_METHOD(ConfigManager, getLibSandHookName, "()Ljava/lang/String;"),
|
||||
NATIVE_METHOD(ConfigManager, getLibWhaleName, "()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"),
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
SKIPUNZIP=1
|
||||
|
||||
RIRU_PATH="/data/misc/riru"
|
||||
RIRU_EDXP="$(cat /proc/sys/kernel/random/uuid|md5sum|cut -c 1-4)"
|
||||
RIRU_MODULES="${RIRU_PATH}/modules"
|
||||
RIRU_TARGET="${RIRU_MODULES}/${RIRU_EDXP}"
|
||||
|
||||
VERSION=$(grep_prop version "${TMPDIR}/module.prop")
|
||||
RIRU_MIN_API_VERSION=$(grep_prop api "${TMPDIR}/module.prop")
|
||||
|
|
@ -15,6 +18,9 @@ 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"
|
||||
LIB_RIRU_EDXP="libriru_${RIRU_EDXP}.so"
|
||||
LIB_WHALE_EDXP="lib$(cat /proc/sys/kernel/random/uuid|md5sum|cut -c 1-10).so"
|
||||
LIB_SANDHOOK_EDXP="lib$(cat /proc/sys/kernel/random/uuid|md5sum|cut -c 1-13).so"
|
||||
|
||||
MODEL="
|
||||
HD1900
|
||||
|
|
@ -205,12 +211,6 @@ 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
|
||||
|
|
@ -250,25 +250,63 @@ fi
|
|||
# rm ${MODPATH}/sepolicy.rule
|
||||
#fi
|
||||
|
||||
ui_print "- Resetting libraries path"
|
||||
ui_print "- Copying framework libraries"
|
||||
|
||||
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"
|
||||
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}"
|
||||
mv "${MODPATH}/system/lib/libriru_edxp.so" "${MODPATH}/system/lib/${LIB_RIRU_EDXP}"
|
||||
mv "${MODPATH}/system/lib/libwhale.edxp.so" "${MODPATH}/system/lib/${LIB_WHALE_EDXP}"
|
||||
|
||||
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"
|
||||
mv "${MODPATH}/system/lib64/libriru_edxp.so" "${MODPATH}/system/lib64/${LIB_RIRU_EDXP}"
|
||||
mv "${MODPATH}/system/lib64/libwhale.edxp.so" "${MODPATH}/system/lib64/${LIB_WHALE_EDXP}"
|
||||
fi
|
||||
|
||||
if [[ "${VARIANTS}" == "SandHook" ]]; then
|
||||
mv "${MODPATH}/system/lib/libsandhook.edxp.so" "${MODPATH}/system/lib/${LIB_SANDHOOK_EDXP}"
|
||||
if [[ "${IS64BIT}" == true ]]; then
|
||||
mv "${MODPATH}/system/lib64/libsandhook.edxp.so" "${MODPATH}/system/lib64/${LIB_SANDHOOK_EDXP}"
|
||||
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/${LIB_RIRU_EDXP}"
|
||||
sed -i 's:/system/framework/edconfig.jar:/system/framework/'"${JAR_EDCONFIG}"':g' "${MODPATH}/system/lib/${LIB_RIRU_EDXP}"
|
||||
sed -i 's:libriru_edxp.so:'"${LIB_RIRU_EDXP}"':g' "${MODPATH}/system/lib/${LIB_RIRU_EDXP}"
|
||||
sed -i 's:libwhale.edxp.so:'"${LIB_WHALE_EDXP}"':g' "${MODPATH}/system/lib/${LIB_RIRU_EDXP}"
|
||||
sed -i 's:libsandhook.edxp.so:'"${LIB_SANDHOOK_EDXP}"':g' "${MODPATH}/system/lib/${LIB_RIRU_EDXP}"
|
||||
|
||||
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/${LIB_RIRU_EDXP}"
|
||||
sed -i 's:/system/framework/edconfig.jar:/system/framework/'"${JAR_EDCONFIG}"':g' "${MODPATH}/system/lib64/${LIB_RIRU_EDXP}"
|
||||
sed -i 's:libriru_edxp.so:'"${LIB_RIRU_EDXP}"':g' "${MODPATH}/system/lib64/${LIB_RIRU_EDXP}"
|
||||
sed -i 's:libwhale.edxp.so:'"${LIB_WHALE_EDXP}"':g' "${MODPATH}/system/lib64/${LIB_RIRU_EDXP}"
|
||||
sed -i 's:libsandhook.edxp.so:'"${LIB_SANDHOOK_EDXP}"':g' "${MODPATH}/system/lib64/${LIB_RIRU_EDXP}"
|
||||
fi
|
||||
|
||||
ui_print "- Removing old configuration"
|
||||
|
||||
if [[ -f "${RIRU_MODULES}/edxp.prop" ]]; then
|
||||
OLD_CONFIG=$(cat "${RIRU_MODULES}/edxp.prop")
|
||||
rm -rf "${RIRU_MODULES}/${OLD_CONFIG}"
|
||||
fi
|
||||
|
||||
if [[ -e "${RIRU_MODULES}/edxp" ]]; then
|
||||
rm -rf "${RIRU_MODULES}/edxp"
|
||||
fi
|
||||
|
||||
ui_print "- Copying extra files"
|
||||
|
||||
TARGET="${RIRU_PATH}/modules/edxp"
|
||||
[[ -d "${RIRU_TARGET}" ]] || mkdir -p "${RIRU_TARGET}" || abort "! Can't mkdir -p ${RIRU_TARGET}"
|
||||
|
||||
[[ -d "${TARGET}" ]] || mkdir -p "${TARGET}" || abort "! Can't mkdir -p ${TARGET}"
|
||||
echo "${RIRU_EDXP}">"${RIRU_MODULES}/edxp.prop"
|
||||
|
||||
rm "${TARGET}/module.prop"
|
||||
rm "${RIRU_TARGET}/module.prop"
|
||||
|
||||
cp "${MODPATH}/module.prop" "${TARGET}/module.prop" || abort "! Can't create ${TARGET}/module.prop"
|
||||
cp "${MODPATH}/module.prop" "${RIRU_TARGET}/module.prop" || abort "! Can't create ${RIRU_TARGET}/module.prop"
|
||||
|
||||
set_perm_recursive "${MODPATH}" 0 0 0755 0644
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ grep_prop() {
|
|||
MODDIR=${0%/*}
|
||||
|
||||
RIRU_PATH="/data/misc/riru"
|
||||
TARGET="${RIRU_PATH}/modules/edxp"
|
||||
TARGET="${RIRU_PATH}/modules"
|
||||
|
||||
EDXP_VERSION=$(grep_prop version "${MODDIR}/module.prop")
|
||||
|
||||
|
|
@ -128,9 +128,6 @@ start_log_cather () {
|
|||
logcat -f ${LOG_FILE} *:S ${LOG_TAG_FILTERS} &
|
||||
LOG_PID=$!
|
||||
echo "${LOG_PID}">"${LOG_PATH}/${LOG_FILE_NAME}.pid"
|
||||
chcon -R ${PATH_CONTEXT} "${LOG_PATH}"
|
||||
chown -R ${PATH_OWNER} "${LOG_PATH}"
|
||||
chmod -R 666 "${LOG_PATH}"
|
||||
}
|
||||
|
||||
# Backup app_process to avoid bootloop caused by original Xposed replacement in Android Oreo
|
||||
|
|
@ -159,8 +156,14 @@ start_log_cather all "EdXposed:V XSharedPreferences:V EdXposed-Bridge:V EdXposed
|
|||
# start_bridge_log_catcher
|
||||
start_log_cather error "XSharedPreferences:V EdXposed-Bridge:V" true true
|
||||
|
||||
[[ -d "${TARGET}" ]] || mkdir -p "${TARGET}"
|
||||
|
||||
cp "${MODDIR}/module.prop" "${TARGET}/module.prop"
|
||||
if [[ -f "/data/misc/riru/modules/edxp.prop" ]]; then
|
||||
CONFIG=$(cat "/data/misc/riru/modules/edxp.prop")
|
||||
[[ -d "${TARGET}/${CONFIG}" ]] || mkdir -p "${TARGET}/${CONFIG}"
|
||||
cp "${MODDIR}/module.prop" "${TARGET}/${CONFIG}/module.prop"
|
||||
fi
|
||||
|
||||
chcon -R u:object_r:system_file:s0 "${MODDIR}"
|
||||
chcon -R u:object_r:system_file:s0 "${MODDIR}"
|
||||
chcon -R ${PATH_CONTEXT} "${LOG_PATH}"
|
||||
chown -R ${PATH_OWNER} "${LOG_PATH}"
|
||||
chmod -R 666 "${LOG_PATH}"
|
||||
|
|
@ -9,11 +9,16 @@ REMOVE=false
|
|||
if [[ "${VARIANT}" == "SandHook" ]]; then
|
||||
[[ -f "${MODDIR}/../riru_edxposed/module.prop" ]] || REMOVE=true
|
||||
else
|
||||
[[ -f "${MODDIR}/../riru_edxposed_sandhook/module.prop" ]] || REMOVE=true
|
||||
[[ -f "${MODDIR}/../riru_edxposed_sandhook/module.prop" ]] || REMOVE=true
|
||||
fi
|
||||
|
||||
if [[ "${REMOVE}" == true ]]; then
|
||||
rm -rf /data/misc/riru/modules/edxp
|
||||
if [[ -f "/data/misc/riru/modules/edxp.prop" ]]; then
|
||||
OLD_CONFIG=$(cat "/data/misc/riru/modules/edxp.prop")
|
||||
rm -rf "/data/misc/riru/modules/${OLD_CONFIG}"
|
||||
rm "/data/misc/riru/modules/edxp.prop"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import android.os.Process;
|
|||
import android.os.Trace;
|
||||
import android.util.Log;
|
||||
|
||||
import com.elderdrivers.riru.edxp.config.ConfigManager;
|
||||
import com.elderdrivers.riru.edxp.util.ClassLoaderUtils;
|
||||
import com.elderdrivers.riru.edxp.util.FileUtils;
|
||||
import com.swift.sandhook.SandHook;
|
||||
|
|
@ -133,9 +134,11 @@ public final class SandHookXposedBridge {
|
|||
|
||||
public static void init() {
|
||||
if (Process.is64Bit()) {
|
||||
SandHookConfig.libSandHookPath = "/system/lib64/libsandhook.edxp.so";
|
||||
// SandHookConfig.libSandHookPath = "/system/lib64/libsandhook.edxp.so";
|
||||
SandHookConfig.libSandHookPath = "/system/lib64/" + ConfigManager.getLibSandHookName();
|
||||
} else {
|
||||
SandHookConfig.libSandHookPath = "/system/lib/libsandhook.edxp.so";
|
||||
// SandHookConfig.libSandHookPath = "/system/lib/libsandhook.edxp.so";
|
||||
SandHookConfig.libSandHookPath = "/system/lib/" + ConfigManager.getLibSandHookName();
|
||||
}
|
||||
SandHookConfig.libLoader = new SandHookConfig.LibLoader() {
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.elderdrivers.riru.edxp.whale.core;
|
||||
|
||||
import com.elderdrivers.riru.edxp.config.ConfigManager;
|
||||
import com.elderdrivers.riru.edxp.config.EdXpConfigGlobal;
|
||||
import com.elderdrivers.riru.edxp.framework.Zygote;
|
||||
import com.elderdrivers.riru.edxp.proxy.BaseRouter;
|
||||
|
|
@ -16,8 +17,10 @@ public class WhaleRouter extends BaseRouter {
|
|||
BaseRouter.useXposedApi = true;
|
||||
EdXpConfigGlobal.sConfig = new WhaleEdxpConfig();
|
||||
EdXpConfigGlobal.sHookProvider = new WhaleHookProvider();
|
||||
Zygote.allowFileAcrossFork("/system/lib/libwhale.edxp.so");
|
||||
Zygote.allowFileAcrossFork("/system/lib64/libwhale.edxp.so");
|
||||
// Zygote.allowFileAcrossFork("/system/lib/libwhale.edxp.so");
|
||||
// Zygote.allowFileAcrossFork("/system/lib64/libwhale.edxp.so");
|
||||
Zygote.allowFileAcrossFork("/system/lib/" + ConfigManager.getLibWhaleName());
|
||||
Zygote.allowFileAcrossFork("/system/lib64/" + ConfigManager.getLibWhaleName());
|
||||
Zygote.allowFileAcrossFork("/system/lib/libart.so");
|
||||
Zygote.allowFileAcrossFork("/system/lib64/libart.so");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,10 @@ public interface EdxpConfig {
|
|||
|
||||
String getXposedPropPath();
|
||||
|
||||
String getLibSandHookName();
|
||||
|
||||
String getLibWhaleName();
|
||||
|
||||
boolean isDynamicModulesMode();
|
||||
|
||||
boolean isNoModuleLogEnabled();
|
||||
|
|
|
|||
Loading…
Reference in New Issue