diff --git a/edxp-core/template_override/customize.sh b/edxp-core/template_override/customize.sh index 9e896fb2..f842a1f7 100644 --- a/edxp-core/template_override/customize.sh +++ b/edxp-core/template_override/customize.sh @@ -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}!" \ No newline at end of file diff --git a/edxp-core/template_override/post-fs-data.sh b/edxp-core/template_override/post-fs-data.sh index ee350ebe..a33a2eaf 100644 --- a/edxp-core/template_override/post-fs-data.sh +++ b/edxp-core/template_override/post-fs-data.sh @@ -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} & } diff --git a/edxp-core/template_override/sepolicy.sh b/edxp-core/template_override/sepolicy.sh new file mode 100644 index 00000000..17cae54f --- /dev/null +++ b/edxp-core/template_override/sepolicy.sh @@ -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 * *" \ No newline at end of file