You've already forked ReZygisk
mirror of
https://github.com/PerformanC/ReZygisk.git
synced 2025-09-06 06:37:01 +00:00
This commit fixes the issue where "webroot" files would have its sha256 hash extracted to the installation directory by using unzip "-x" flag to exclude ".sha256" files with that.
201 lines
7.7 KiB
Bash
201 lines
7.7 KiB
Bash
# shellcheck disable=SC2034
|
|
SKIPUNZIP=1
|
|
|
|
DEBUG=@DEBUG@
|
|
MIN_KSU_VERSION=@MIN_KSU_VERSION@
|
|
MIN_KSUD_VERSION=@MIN_KSUD_VERSION@
|
|
MAX_KSU_VERSION=@MAX_KSU_VERSION@
|
|
MIN_MAGISK_VERSION=@MIN_MAGISK_VERSION@
|
|
MIN_APATCH_VERSION=@MIN_APATCH_VERSION@
|
|
|
|
if [ "$BOOTMODE" ] && [ "$KSU" ]; then
|
|
ui_print "- Installing from KernelSU app"
|
|
ui_print "- KernelSU version: $KSU_KERNEL_VER_CODE (kernel) + $KSU_VER_CODE (ksud)"
|
|
if ! [ "$KSU_KERNEL_VER_CODE" ] || [ "$KSU_KERNEL_VER_CODE" -lt "$MIN_KSU_VERSION" ]; then
|
|
ui_print "*********************************************************"
|
|
ui_print "! KernelSU version is too old!"
|
|
ui_print "! Please update KernelSU to latest version"
|
|
abort "*********************************************************"
|
|
elif [ "$KSU_KERNEL_VER_CODE" -ge "$MAX_KSU_VERSION" ]; then
|
|
ui_print "*********************************************************"
|
|
ui_print "! KernelSU version abnormal!"
|
|
ui_print "! Please integrate KernelSU into your kernel"
|
|
ui_print " as submodule instead of copying the source code"
|
|
abort "*********************************************************"
|
|
fi
|
|
if ! [ "$KSU_VER_CODE" ] || [ "$KSU_VER_CODE" -lt "$MIN_KSUD_VERSION" ]; then
|
|
ui_print "*********************************************************"
|
|
ui_print "! ksud version is too old!"
|
|
ui_print "! Please update KernelSU Manager to latest version"
|
|
abort "*********************************************************"
|
|
fi
|
|
if [ "$(which magisk)" ]; then
|
|
ui_print "*********************************************************"
|
|
ui_print "! Multiple root implementation is NOT supported!"
|
|
ui_print "! Please uninstall Magisk before installing ReZygisk"
|
|
abort "*********************************************************"
|
|
fi
|
|
elif [ "$BOOTMODE" ] && [ "$APATCH" ]; then
|
|
ui_print "- Installing from APatch app"
|
|
if ! [ "$APATCH_VER_CODE" ] || [ "$APATCH_VER_CODE" -lt "$MIN_APATCH_VERSION" ]; then
|
|
ui_print "*********************************************************"
|
|
ui_print "! APatch version is too old!"
|
|
ui_print "! Please update APatch to latest version"
|
|
abort "*********************************************************"
|
|
fi
|
|
elif [ "$BOOTMODE" ] && [ "$MAGISK_VER_CODE" ]; then
|
|
ui_print "- Installing from Magisk app"
|
|
if [ "$MAGISK_VER_CODE" -lt "$MIN_MAGISK_VERSION" ]; then
|
|
ui_print "*********************************************************"
|
|
ui_print "! Magisk version is too old!"
|
|
ui_print "! Please update Magisk to latest version"
|
|
abort "*********************************************************"
|
|
fi
|
|
else
|
|
ui_print "*********************************************************"
|
|
ui_print "! Install from recovery is not supported"
|
|
ui_print "! Please install from KernelSU or Magisk app"
|
|
abort "*********************************************************"
|
|
fi
|
|
|
|
VERSION=$(grep_prop version "${TMPDIR}/module.prop")
|
|
ui_print "- Installing ReZygisk $VERSION"
|
|
|
|
# check android
|
|
if [ "$API" -lt 26 ]; then
|
|
ui_print "! Unsupported sdk: $API"
|
|
abort "! Minimal supported sdk is 26 (Android 8.0)"
|
|
else
|
|
ui_print "- Device sdk: $API"
|
|
fi
|
|
|
|
# check architecture
|
|
if [ "$ARCH" != "arm" ] && [ "$ARCH" != "arm64" ] && [ "$ARCH" != "x86" ] && [ "$ARCH" != "x64" ]; then
|
|
abort "! Unsupported platform: $ARCH"
|
|
else
|
|
ui_print "- Device platform: $ARCH"
|
|
fi
|
|
|
|
ui_print "- Extracting verify.sh"
|
|
unzip -o "$ZIPFILE" 'verify.sh' -d "$TMPDIR" >&2
|
|
if [ ! -f "$TMPDIR/verify.sh" ]; then
|
|
ui_print "*********************************************************"
|
|
ui_print "! Unable to extract verify.sh!"
|
|
ui_print "! This zip may be corrupted, please try downloading again"
|
|
abort "*********************************************************"
|
|
fi
|
|
. "$TMPDIR/verify.sh"
|
|
extract "$ZIPFILE" 'customize.sh' "$TMPDIR/.vunzip"
|
|
extract "$ZIPFILE" 'verify.sh' "$TMPDIR/.vunzip"
|
|
extract "$ZIPFILE" 'sepolicy.rule' "$TMPDIR"
|
|
|
|
if [ "$KSU" ]; then
|
|
ui_print "- Checking SELinux patches"
|
|
if ! check_sepolicy "$TMPDIR/sepolicy.rule"; then
|
|
ui_print "*********************************************************"
|
|
ui_print "! Unable to apply SELinux patches!"
|
|
ui_print "! Your kernel may not support SELinux patch fully"
|
|
abort "*********************************************************"
|
|
fi
|
|
fi
|
|
|
|
ui_print "- Extracting module files"
|
|
extract "$ZIPFILE" 'module.prop' "$MODPATH"
|
|
extract "$ZIPFILE" 'post-fs-data.sh' "$MODPATH"
|
|
extract "$ZIPFILE" 'service.sh' "$MODPATH"
|
|
extract "$ZIPFILE" 'uninstall.sh' "$MODPATH"
|
|
mv "$TMPDIR/sepolicy.rule" "$MODPATH"
|
|
|
|
mkdir "$MODPATH/bin"
|
|
mkdir "$MODPATH/webroot"
|
|
|
|
ui_print "- Extracting webroot"
|
|
unzip -o "$ZIPFILE" "webroot/*" -x "*.sha256" -d "$MODPATH"
|
|
|
|
CPU_ABIS=$(getprop ro.product.cpu.abilist)
|
|
|
|
SUPPORTS_32BIT=false
|
|
SUPPORTS_64BIT=false
|
|
|
|
if [[ "$CPU_ABIS" == *"x86"* && "$CPU_ABIS" != "x86_64" || "$CPU_ABIS" == *"armeabi"* ]]; then
|
|
SUPPORTS_32BIT=true
|
|
ui_print "- Device supports 32-bit"
|
|
fi
|
|
|
|
if [[ "$CPU_ABIS" == *"x86_64"* || "$CPU_ABIS" == *"arm64-v8a"* ]]; then
|
|
SUPPORTS_64BIT=true
|
|
ui_print "- Device supports 64-bit"
|
|
fi
|
|
|
|
if [ "$SUPPORTS_32BIT" = true ]; then
|
|
mkdir "$MODPATH/lib"
|
|
fi
|
|
|
|
if [ "$SUPPORTS_64BIT" = true ]; then
|
|
mkdir "$MODPATH/lib64"
|
|
fi
|
|
|
|
if [ "$ARCH" = "x86" ] || [ "$ARCH" = "x64" ]; then
|
|
if [ "$SUPPORTS_32BIT" = true ]; then
|
|
ui_print "- Extracting x86 libraries"
|
|
extract "$ZIPFILE" 'bin/x86/zygiskd' "$MODPATH/bin" true
|
|
mv "$MODPATH/bin/zygiskd" "$MODPATH/bin/zygiskd32"
|
|
extract "$ZIPFILE" 'lib/x86/libzygisk.so' "$MODPATH/lib" true
|
|
extract "$ZIPFILE" 'lib/x86/libzygisk_ptrace.so' "$MODPATH/bin" true
|
|
mv "$MODPATH/bin/libzygisk_ptrace.so" "$MODPATH/bin/zygisk-ptrace32"
|
|
|
|
extract "$ZIPFILE" 'machikado.x86' "$MODPATH" true
|
|
fi
|
|
|
|
if [ "$SUPPORTS_64BIT" = true ]; then
|
|
ui_print "- Extracting x64 libraries"
|
|
extract "$ZIPFILE" 'bin/x86_64/zygiskd' "$MODPATH/bin" true
|
|
mv "$MODPATH/bin/zygiskd" "$MODPATH/bin/zygiskd64"
|
|
extract "$ZIPFILE" 'lib/x86_64/libzygisk.so' "$MODPATH/lib64" true
|
|
extract "$ZIPFILE" 'lib/x86_64/libzygisk_ptrace.so' "$MODPATH/bin" true
|
|
mv "$MODPATH/bin/libzygisk_ptrace.so" "$MODPATH/bin/zygisk-ptrace64"
|
|
|
|
extract "$ZIPFILE" 'machikado.x86_64' "$MODPATH" true
|
|
fi
|
|
else
|
|
if [ "$SUPPORTS_32BIT" = true ]; then
|
|
ui_print "- Extracting arm libraries"
|
|
extract "$ZIPFILE" 'bin/armeabi-v7a/zygiskd' "$MODPATH/bin" true
|
|
mv "$MODPATH/bin/zygiskd" "$MODPATH/bin/zygiskd32"
|
|
extract "$ZIPFILE" 'lib/armeabi-v7a/libzygisk.so' "$MODPATH/lib" true
|
|
extract "$ZIPFILE" 'lib/armeabi-v7a/libzygisk_ptrace.so' "$MODPATH/bin" true
|
|
mv "$MODPATH/bin/libzygisk_ptrace.so" "$MODPATH/bin/zygisk-ptrace32"
|
|
|
|
extract "$ZIPFILE" 'machikado.arm' "$MODPATH" true
|
|
fi
|
|
|
|
if [ "$SUPPORTS_64BIT" = true ]; then
|
|
ui_print "- Extracting arm64 libraries"
|
|
extract "$ZIPFILE" 'bin/arm64-v8a/zygiskd' "$MODPATH/bin" true
|
|
mv "$MODPATH/bin/zygiskd" "$MODPATH/bin/zygiskd64"
|
|
extract "$ZIPFILE" 'lib/arm64-v8a/libzygisk.so' "$MODPATH/lib64" true
|
|
extract "$ZIPFILE" 'lib/arm64-v8a/libzygisk_ptrace.so' "$MODPATH/bin" true
|
|
mv "$MODPATH/bin/libzygisk_ptrace.so" "$MODPATH/bin/zygisk-ptrace64"
|
|
|
|
extract "$ZIPFILE" 'machikado.arm64' "$MODPATH" true
|
|
fi
|
|
fi
|
|
|
|
ui_print "- Setting permissions"
|
|
set_perm_recursive "$MODPATH/bin" 0 0 0755 0755
|
|
|
|
if [ "$SUPPORTS_32BIT" = true ]; then
|
|
set_perm_recursive "$MODPATH/lib" 0 0 0755 0644 u:object_r:system_lib_file:s0
|
|
fi
|
|
|
|
if [ "$SUPPORTS_64BIT" = true ]; then
|
|
set_perm_recursive "$MODPATH/lib64" 0 0 0755 0644 u:object_r:system_lib_file:s0
|
|
fi
|
|
|
|
# If Huawei's Maple is enabled, system_server is created with a special way which is out of Zygisk's control
|
|
HUAWEI_MAPLE_ENABLED=$(grep_prop ro.maple.enable)
|
|
if [ "$HUAWEI_MAPLE_ENABLED" == "1" ]; then
|
|
ui_print "- Add ro.maple.enable=0"
|
|
echo "ro.maple.enable=0" >>"$MODPATH/system.prop"
|
|
fi
|