Support old Magisk

This commit is contained in:
Jim Wu 2020-01-06 20:13:27 +08:00
parent bf1467a068
commit b32801c89a
3 changed files with 180 additions and 42 deletions

View File

@ -1,50 +1,162 @@
SKIPUNZIP=1
RIRU_PATH="/data/misc/riru"
OLD_MAGISK=false
DETECTED_DEVICE=false
PROP_MODEL=`getprop ro.product.model`
PROP_DEVICE=`getprop ro.product.device`
PROP_PRODUCT=`getprop ro.build.product`
PROP_BRAND=`getprop ro.product.brand`
PROP_MANUFACTURER=`getprop ro.product.manufacturer`
MODEL="
HD1900
HD1910
"
DEVICE="
OnePlus7T
OnePlus7TPro
"
PRODUCT="
OnePlus7T
OnePlus7TPro
"
BRAND="
HUAWEI
HONOR
"
MANUFACTURER="
HUAWEI
"
require_new_magisk() {
ui_print "*******************************"
ui_print " Please install Magisk v20.2+! "
ui_print "*******************************"
abort
ui_print "*******************************"
ui_print " Please install Magisk v20.2+! "
ui_print "*******************************"
abort
}
require_new_riru() {
ui_print "**********************************"
ui_print " Please Install Riru - Core v19+! "
ui_print "**********************************"
abort
}
require_yahfa() {
ui_print "****************************************"
ui_print " Only YAHFA supports x86 or x64 devices "
ui_print "****************************************"
abort
}
check_old_magisk_device() {
OLD_MAGISK=true
ui_print "- Old Magisk detected"
if [[ "${DETECTED_DEVICE}" = true ]]; then
require_new_magisk
fi
}
check_magisk_version() {
for TARGET in ${MODEL}
do
if [[ "${PROP_MODEL}" == ${TARGET} ]]
then
DETECTED_DEVICE=true
fi
done
for TARGET in ${DEVICE}
do
if [[ "${PROP_DEVICE}" == ${TARGET} ]]
then
DETECTED_DEVICE=true
fi
done
for TARGET in ${PRODUCT}
do
if [[ "${PROP_PRODUCT}" == ${TARGET} ]]
then
DETECTED_DEVICE=true
fi
done
for TARGET in ${BRAND}
do
if [[ "${PROP_BRAND}" == ${TARGET} ]]
then
DETECTED_DEVICE=true
fi
done
for TARGET in ${MANUFACTURER}
do
if [[ "${PROP_MANUFACTURER}" == ${TARGET} ]]
then
DETECTED_DEVICE=true
fi
done
if [[ "${DETECTED_DEVICE}" = true ]]; then
ui_print "- Special device detected"
fi
ui_print "- Magisk version is ${MAGISK_VER_CODE}"
[[ ${MAGISK_VER_CODE} -ge 20110 ]] || check_old_magisk_device
}
check_riru_version() {
[[ ! -f "${RIRU_PATH}/api_version" ]] && abort "! Please Install Riru - Core v19 or above"
VERSION=$(cat "${RIRU_PATH}/api_version")
ui_print "- Riru API version is ${VERSION}"
[[ "${VERSION}" -ge 4 ]] || abort "! Please Install Riru - Core v19 or above"
[[ ! -f "${RIRU_PATH}/api_version" ]] && require_new_riru
VERSION=$(cat "${RIRU_PATH}/api_version")
ui_print "- Riru API version is ${VERSION}"
[[ "${VERSION}" -ge 4 ]] || require_new_riru
}
check_architecture() {
if [[ "${ARCH}" != "arm" && "${ARCH}" != "arm64" && "${ARCH}" != "x86" && "${ARCH}" != "x64" ]]; then
abort "! Unsupported platform: ${ARCH}"
else
ui_print "- Device platform: ${ARCH}"
fi
if [[ "${MODID}" == "riru_edxposed_sandhook" ]]; then
VARIANTS="SandHook"
else
VARIANTS="YAHFA"
fi
ui_print "- EdXposed Variant: ${VARIANTS}"
if [[ "${ARCH}" != "arm" && "${ARCH}" != "arm64" && "${ARCH}" != "x86" && "${ARCH}" != "x64" ]]; then
abort "! Unsupported platform is ${ARCH}"
else
ui_print "- Device platform is ${ARCH}"
if [[ "${ARCH}" == "x86" || "${ARCH}" == "x64" ]]; then
if [[ "${VARIANTS}" == "SandHook" ]]; then
require_yahfa
fi
fi
fi
}
[[ ${MAGISK_VER_CODE} -ge 20110 ]] || require_new_magisk
check_architecture
check_magisk_version
check_riru_version
check_architecture
ui_print "- Extracting module files"
unzip -o "${ZIPFILE}" module.prop post-fs-data.sh sepolicy.rule system.prop util_functions.sh -d "${MODPATH}" >&2
unzip -o "${ZIPFILE}" module.prop post-fs-data.sh system.prop uninstall.sh 'system/*' -d "${MODPATH}" >&2
if [[ "${ARCH}" == "x86" || "${ARCH}" == "x64" ]]; then
ui_print "- Extracting x86/64 libraries"
unzip -o "${ZIPFILE}" 'system_x86/*' -d "${MODPATH}" >&2
mv "${MODPATH}/system_x86/lib" "${MODPATH}/system/lib"
mv "${MODPATH}/system_x86/lib64" "${MODPATH}/system/lib64"
else
ui_print "- Extracting arm/arm64 libraries"
unzip -o "${ZIPFILE}" 'system/*' -d "${MODPATH}" >&2
if [[ "${ARCH}" == "x86" || "${ARCH}" == "x64" ]]
then
ui_print "- Replacing x86/64 libraries"
unzip -o "${ZIPFILE}" 'system_x86/*' -d "${MODPATH}" >&2
rm -rf "${MODPATH}/system/lib"
rm -rf "${MODPATH}/system/lib64"
mv "${MODPATH}/system_x86/lib" "${MODPATH}/system/lib"
mv "${MODPATH}/system_x86/lib64" "${MODPATH}/system/lib64"
rm -rf "${MODPATH}/system_x86"
fi
if [[ "${IS64BIT}" = false ]]; then
ui_print "- Removing 64-bit libraries"
rm -rf "${MODPATH}/system/lib64"
if [[ "${IS64BIT}" = false ]]
then
ui_print "- Removing 64-bit libraries"
rm -rf "${MODPATH}/system/lib64"
fi
if [[ "${OLD_MAGISK}" = true ]]
then
ui_print "- Extracting custom sepolicy rule for old Magisk"
unzip -o "${ZIPFILE}" sepolicy.sh -d "${MODPATH}" >&2
else
ui_print "- Extracting custom sepolicy rule"
unzip -o "${ZIPFILE}" sepolicy.rule -d "${MODPATH}" >&2
fi
ui_print "- Copying extra files"
@ -55,6 +167,8 @@ TARGET="${RIRU_PATH}/modules/edxp"
cp "${MODPATH}/module.prop" "${TARGET}/module.prop" || abort "! Can't create ${TARGET}/module.prop"
ui_print "- Files copied"
set_perm_recursive "${MODPATH}" 0 0 0755 0644
VERSION=`grep_prop version $TMPDIR/module.prop`
ui_print "- Welcome to EdXposed ${VERSION}!"

View File

@ -1,6 +1,11 @@
#!/system/bin/sh
MODDIR=${0%/*}
if [[ -z "${MODDIR}/sepolicy.sh" ]]
then
. ${MODDIR}/sepolicy.sh
fi
grep_prop() {
local REGEX="s/^$1=//p"
shift
@ -13,7 +18,8 @@ EDXP_VERSION=`grep_prop version ${MODDIR}/module.prop`
ANDROID_SDK=`getprop ro.build.version.sdk`
BUILD_DESC=`getprop ro.build.description`
PRODUCT=`getprop ro.build.product`
MANUFACTURE=`getprop ro.product.manufacturer`
MODEL=`getprop ro.product.model`
MANUFACTURER=`getprop ro.product.manufacturer`
BRAND=`getprop ro.product.brand`
FINGERPRINT=`getprop ro.build.fingerprint`
ARCH=`getprop ro.product.cpu.abi`
@ -88,18 +94,21 @@ start_log_cather () {
echo "QQ support group: 855219808">>${LOG_FILE}
echo "Telegram support group: @Code_Of_MeowCat">>${LOG_FILE}
echo "--------- beginning of information">>${LOG_FILE}
echo "Manufacturer: ${MANUFACTURER}">>${LOG_FILE}
echo "Brand: ${BRAND}">>${LOG_FILE}
echo "Device: ${DEVICE}">>${LOG_FILE}
echo "Product: ${PRODUCT}">>${LOG_FILE}
echo "Model: ${MODEL}">>${LOG_FILE}
echo "Fingerprint: ${FINGERPRINT}">>${LOG_FILE}
echo "ROM description: ${BUILD_DESC}">>${LOG_FILE}
echo "Architecture: ${ARCH}">>${LOG_FILE}
echo "Android build: ${BUILD}">>${LOG_FILE}
echo "Android version: ${ANDROID}">>${LOG_FILE}
echo "Android sdk: ${ANDROID_SDK}">>${LOG_FILE}
echo "Android build: ${BUILD}">>${LOG_FILE}
echo "Fingerprint: ${FINGERPRINT}">>${LOG_FILE}
echo "ROM build description: ${BUILD_DESC}">>${LOG_FILE}
echo "EdXposed Version: ${EDXP_VERSION} (api: 90.0)">>${LOG_FILE}
echo "Architecture: ${ARCH}">>${LOG_FILE}
echo "Device: ${DEVICE}">>${LOG_FILE}
echo "Manufacture: ${MANUFACTURE}">>${LOG_FILE}
echo "Brand: ${BRAND}">>${LOG_FILE}
echo "Product: ${PRODUCT}">>${LOG_FILE}
echo "Riru: ${RIRU_VERSION} (${RIRU_VERCODE}) (api: ${RIRU_APICODE})">>${LOG_FILE}
echo "EdXposed version: ${EDXP_VERSION}">>${LOG_FILE}
echo "EdXposed api: 90.0">>${LOG_FILE}
echo "Riru version: ${RIRU_VERSION} (${RIRU_VERCODE})">>${LOG_FILE}
echo "Riru api: ${RIRU_APICODE}">>${LOG_FILE}
echo "Magisk: ${MAGISK_VERSION} (${MAGISK_VERCODE})">>${LOG_FILE}
logcat -f ${LOG_FILE} *:S ${LOG_TAG_FILTERS} &
}

View File

@ -0,0 +1,15 @@
#!/system/bin/sh
# necessary for using mmap in system_server process
supolicy --live "allow system_server system_server process {execmem}"
supolicy --live "allow system_server system_server memprotect {mmap_zero}"
# for built-in apps // TODO maybe narrow down the target classes
supolicy --live "allow coredomain coredomain process {execmem}"
# read configs set in our app
supolicy --live "allow coredomain app_data_file * *"
supolicy --live "attradd {system_app platform_app} mlstrustedsubject"
# read module apk file in zygote
supolicy --live "allow zygote apk_data_file * *"