diff --git a/.gitignore b/.gitignore index ad5be7ea9..a39f2750b 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,7 @@ app/release *.hprof app/.externalNativeBuild/ +libbusybox.so +*.sh +public.certificate.x509.pem +private.key.pk8 diff --git a/README.md b/README.md index f5a13a5ac..95b9e4150 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ -# Magisk Manager -You need to install CMake and NDK to build the zipadjust library for zip preprocessing +# Magisk Manager +This is one of the submodules used in Magisk. The project is licensed under GPL v3 (or newer). +More info are written in the [Magisk Main Repo](https://github.com/topjohnwu/Magisk) -## Pre-built Binaries -Busybox (arm and x86) compiled by osm0sis (`libbusybox.so` under `app\src\main\jniLibs`) -Source and more info: [osm0sis' Odds and Ends](https://forum.xda-developers.com/showthread.php?t=2239421) +## Building Notes +You need to install CMake and NDK to build the zipadjust library. +There are several files required to let Magisk Manager work properly, and should be compiled/copied by using the build script in the [Magisk Main Repo](https://github.com/topjohnwu/Magisk). These files are: `jniLibs//libbusybox.so`, `assets/magisk_uninstaller.sh`, `assets/magisk_uninstaller.sh`, `assets/public.certificate.x509.pem`, and `assets/private.key.pk8`. diff --git a/app/src/main/assets/magisk_uninstaller.sh b/app/src/main/assets/magisk_uninstaller.sh deleted file mode 100644 index 3d0d3ddaa..000000000 --- a/app/src/main/assets/magisk_uninstaller.sh +++ /dev/null @@ -1,153 +0,0 @@ -#!/system/bin/sh -########################################################################################## -# -# Magisk Uninstaller -# by topjohnwu -# -# This script can be placed in /cache/magisk_uninstaller.sh -# The Magisk main binary will pick up the script, and uninstall itself, following a reboot -# This script can also be used in flashable zip with the uninstaller_loader.sh -# -# This script will try to do restoration with the following: -# 1-1. Find and restore the original stock boot image dump (OTA proof) -# 1-2. If 1-1 fails, restore ramdisk from the internal backup -# (ramdisk fully restored, not OTA friendly) -# 1-3. If 1-2 fails, it will remove added files in ramdisk, however modified files -# are remained modified, because we have no backups. By doing so, Magisk will -# not be started at boot, but this isn't actually 100% cleaned up -# 2. Remove all Magisk related files -# (The list is LARGE, most likely due to bad decision in early versions -# the latest versions has much less bloat to cleanup) -# -########################################################################################## - -# Call ui_print_wrap if exists, or else simply use echo -# Useful when wrapped in flashable zip -ui_print_wrap() { - type ui_print >/dev/null 2>&1 && ui_print "$1" || echo "$1" -} - -# Call abort if exists, or else show error message and exit -# Essential when wrapped in flashable zip -abort_wrap() { - type abort >/dev/null 2>&1 - if [ $? -ne 0 ]; then - ui_print_wrap "$1" - exit 1 - else - abort "$1" - fi -} - -if [ ! -d $MAGISKBIN -o ! -f $MAGISKBIN/magiskboot -o ! -f $MAGISKBIN/util_functions.sh ]; then - ui_print_wrap "! Cannot find $MAGISKBIN" - exit 1 -fi - -[ -z $BOOTMODE ] && BOOTMODE=false - -MAGISKBIN=/data/magisk -CHROMEDIR=$MAGISKBIN/chromeos - -# Default permissions -umask 022 - -# Load utility functions -. $MAGISKBIN/util_functions.sh - -# Find the boot image -find_boot_image -[ -z $BOOTIMAGE ] && abort "! Unable to detect boot image" - -ui_print_wrap "- Found Boot Image: $BOOTIMAGE" - -cd $MAGISKBIN - -ui_print_wrap "- Unpacking boot image" -./magiskboot --unpack "$BOOTIMAGE" -CHROMEOS=false -case $? in - 1 ) - abort_wrap "! Unable to unpack boot image" - ;; - 2 ) - CHROMEOS=true - ;; - 3 ) - ui_print_wrap "! Sony ELF32 format detected" - abort_wrap "! Please use BootBridge from @AdrianDC to flash Magisk" - ;; - 4 ) - ui_print_wrap "! Sony ELF64 format detected" - abort_wrap "! Stock kernel cannot be patched, please use a custom kernel" -esac - -# Update our previous backup to new format if exists -if [ -f /data/stock_boot.img ]; then - SHA1=`./magiskboot --sha1 /data/stock_boot.img | tail -n 1` - STOCKDUMP=/data/stock_boot_${SHA1}.img - mv /data/stock_boot.img $STOCKDUMP - ./magiskboot --compress $STOCKDUMP -fi - -# Detect boot image state -./magiskboot --cpio-test ramdisk.cpio -case $? in - 0 ) # Stock boot - ui_print_wrap "- Stock boot image detected!" - ui_print_wrap "! Magisk is not installed!" - exit - ;; - 1 ) # Magisk patched - ui_print_wrap "- Magisk patched image detected!" - # Find SHA1 of stock boot image - if [ -z $SHA1 ]; then - ./magiskboot --cpio-extract ramdisk.cpio init.magisk.rc init.magisk.rc.old - SHA1=`grep_prop "# STOCKSHA1" init.magisk.rc.old` - rm -f init.magisk.rc.old - fi - [ ! -z $SHA1 ] && STOCKDUMP=/data/stock_boot_${SHA1}.img - if [ -f ${STOCKDUMP}.gz ]; then - ui_print_wrap "- Boot image backup found!" - ./magiskboot --decompress ${STOCKDUMP}.gz stock_boot.img - else - ui_print_wrap "! Boot image backup unavailable" - ui_print_wrap "- Restoring ramdisk with backup" - ./magiskboot --cpio-restore ramdisk.cpio - ./magiskboot --repack $BOOTIMAGE stock_boot.img - fi - ;; - 2 ) # Other patched - ui_print_wrap "! Boot image patched by other programs!" - abort_wrap "! Cannot uninstall with this uninstaller" - ;; -esac - -# Sign chromeos boot -if $CHROMEOS; then - echo > empty - - ./chromeos/futility vbutil_kernel --pack stock_boot.img.signed \ - --keyblock ./chromeos/kernel.keyblock --signprivate ./chromeos/kernel_data_key.vbprivk \ - --version 1 --vmlinuz stock_boot.img --config empty --arch arm --bootloader empty --flags 0x1 - - rm -f empty stock_boot.img - mv stock_boot.img.signed stock_boot.img -fi - -ui_print_wrap "- Flashing stock/reverted image" -if [ -L "$BOOTIMAGE" ]; then - dd if=stock_boot.img of="$BOOTIMAGE" bs=4096 -else - cat stock_boot.img /dev/zero | dd of="$BOOTIMAGE" bs=4096 >/dev/null 2>&1 -fi -rm -f stock_boot.img - -ui_print_wrap "- Removing Magisk files" -rm -rf /cache/magisk.log /cache/last_magisk.log /cache/magiskhide.log /cache/.disable_magisk \ - /cache/magisk /cache/magisk_merge /cache/magisk_mount /cache/unblock /cache/magisk_uninstaller.sh \ - /data/Magisk.apk /data/magisk.apk /data/magisk.img /data/magisk_merge.img /data/magisk_debug.log \ - /data/busybox /data/magisk /data/custom_ramdisk_patch.sh /data/property/*magisk* \ - /data/app/com.topjohnwu.magisk* /data/user/*/com.topjohnwu.magisk 2>/dev/null - -$BOOTMODE && reboot diff --git a/app/src/main/assets/private.key.pk8 b/app/src/main/assets/private.key.pk8 deleted file mode 100644 index 586c1bd5c..000000000 Binary files a/app/src/main/assets/private.key.pk8 and /dev/null differ diff --git a/app/src/main/assets/public.certificate.x509.pem b/app/src/main/assets/public.certificate.x509.pem deleted file mode 100644 index e242d83e2..000000000 --- a/app/src/main/assets/public.certificate.x509.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEqDCCA5CgAwIBAgIJAJNurL4H8gHfMA0GCSqGSIb3DQEBBQUAMIGUMQswCQYD -VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4g -VmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UE -AxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAe -Fw0wODAyMjkwMTMzNDZaFw0zNTA3MTcwMTMzNDZaMIGUMQswCQYDVQQGEwJVUzET -MBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4G -A1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9p -ZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZI -hvcNAQEBBQADggENADCCAQgCggEBANaTGQTexgskse3HYuDZ2CU+Ps1s6x3i/waM -qOi8qM1r03hupwqnbOYOuw+ZNVn/2T53qUPn6D1LZLjk/qLT5lbx4meoG7+yMLV4 -wgRDvkxyGLhG9SEVhvA4oU6Jwr44f46+z4/Kw9oe4zDJ6pPQp8PcSvNQIg1QCAcy -4ICXF+5qBTNZ5qaU7Cyz8oSgpGbIepTYOzEJOmc3Li9kEsBubULxWBjf/gOBzAzU -RNps3cO4JFgZSAGzJWQTT7/emMkod0jb9WdqVA2BVMi7yge54kdVMxHEa5r3b97s -zI5p58ii0I54JiCUP5lyfTwE/nKZHZnfm644oLIXf6MdW2r+6R8CAQOjgfwwgfkw -HQYDVR0OBBYEFEhZAFY9JyxGrhGGBaR0GawJyowRMIHJBgNVHSMEgcEwgb6AFEhZ -AFY9JyxGrhGGBaR0GawJyowRoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UE -CBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMH -QW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAG -CSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJAJNurL4H8gHfMAwGA1Ud -EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHqvlozrUMRBBVEY0NqrrwFbinZa -J6cVosK0TyIUFf/azgMJWr+kLfcHCHJsIGnlw27drgQAvilFLAhLwn62oX6snb4Y -LCBOsVMR9FXYJLZW2+TcIkCRLXWG/oiVHQGo/rWuWkJgU134NDEFJCJGjDbiLCpe -+ZTWHdcwauTJ9pUbo8EvHRkU3cYfGmLaLfgn9gP+pWA7LFQNvXwBnDa6sppCccEX -31I828XzgXpJ4O+mDL1/dBd+ek8ZPUP0IgdyZm5MTYPhvVqGCHzzTy3sIeJFymwr -sBbmg2OAUNLEMO6nwmocSdN2ClirfxqCzJOLSDE4QyS9BAH6EhY6UFcOaE0= ------END CERTIFICATE----- diff --git a/app/src/main/assets/util_functions.sh b/app/src/main/assets/util_functions.sh deleted file mode 100644 index b113bd9bf..000000000 --- a/app/src/main/assets/util_functions.sh +++ /dev/null @@ -1,192 +0,0 @@ -########################################################################################## -# -# Magisk General Utility Functions -# by topjohnwu -# -# Used in flash_script.sh, addon.d.sh, magisk module installers, and uninstaller -# -########################################################################################## - -get_outfd() { - readlink /proc/$$/fd/$OUTFD 2>/dev/null | grep /tmp >/dev/null - if [ "$?" -eq "0" ]; then - OUTFD=0 - - for FD in `ls /proc/$$/fd`; do - readlink /proc/$$/fd/$FD 2>/dev/null | grep pipe >/dev/null - if [ "$?" -eq "0" ]; then - ps | grep " 3 $FD " | grep -v grep >/dev/null - if [ "$?" -eq "0" ]; then - OUTFD=$FD - break - fi - fi - done - fi -} - -ui_print() { - if $BOOTMODE; then - echo "$1" - else - echo -n -e "ui_print $1\n" >> /proc/self/fd/$OUTFD - echo -n -e "ui_print\n" >> /proc/self/fd/$OUTFD - fi -} - -getvar() { - local VARNAME=$1 - local VALUE=$(eval echo \$"$VARNAME"); - for FILE in /dev/.magisk /data/.magisk /cache/.magisk /system/.magisk; do - if [ -z "$VALUE" ]; then - LINE=$(cat $FILE 2>/dev/null | grep "$VARNAME=") - if [ ! -z "$LINE" ]; then - VALUE=${LINE#*=} - fi - fi - done - eval $VARNAME=\$VALUE -} - -find_boot_image() { - if [ -z "$BOOTIMAGE" ]; then - for BLOCK in boot_a BOOT_A kern-a KERN-A android_boot ANDROID_BOOT kernel KERNEL boot BOOT lnx LNX; do - BOOTIMAGE=`ls /dev/block/by-name/$BLOCK || ls /dev/block/platform/*/by-name/$BLOCK || ls /dev/block/platform/*/*/by-name/$BLOCK` 2>/dev/null - [ ! -z $BOOTIMAGE ] && break - done - fi - # Recovery fallback - if [ -z "$BOOTIMAGE" ]; then - for FSTAB in /etc/*fstab*; do - BOOTIMAGE=`grep -E '\b/boot\b' $FSTAB | grep -v "#" | grep -oE '/dev/[a-zA-Z0-9_./-]*'` - [ ! -z $BOOTIMAGE ] && break - done - fi - [ -L "$BOOTIMAGE" ] && BOOTIMAGE=`readlink $BOOTIMAGE` -} - -is_mounted() { - if [ ! -z "$2" ]; then - cat /proc/mounts | grep $1 | grep $2, >/dev/null - else - cat /proc/mounts | grep $1 >/dev/null - fi - return $? -} - -grep_prop() { - REGEX="s/^$1=//p" - shift - FILES=$@ - if [ -z "$FILES" ]; then - FILES='/system/build.prop' - fi - cat $FILES 2>/dev/null | sed -n "$REGEX" | head -n 1 -} - -remove_system_su() { - if [ -f /system/bin/su -o -f /system/xbin/su ] && [ ! -f /su/bin/su ]; then - ui_print "! System installed root detected, mount rw :(" - mount -o rw,remount /system - # SuperSU - if [ -e /system/bin/.ext/.su ]; then - mv -f /system/bin/app_process32_original /system/bin/app_process32 2>/dev/null - mv -f /system/bin/app_process64_original /system/bin/app_process64 2>/dev/null - mv -f /system/bin/install-recovery_original.sh /system/bin/install-recovery.sh 2>/dev/null - cd /system/bin - if [ -e app_process64 ]; then - ln -sf app_process64 app_process - else - ln -sf app_process32 app_process - fi - fi - rm -rf /system/.pin /system/bin/.ext /system/etc/.installed_su_daemon /system/etc/.has_su_daemon \ - /system/xbin/daemonsu /system/xbin/su /system/xbin/sugote /system/xbin/sugote-mksh /system/xbin/supolicy \ - /system/bin/app_process_init /system/bin/su /cache/su /system/lib/libsupol.so /system/lib64/libsupol.so \ - /system/su.d /system/etc/install-recovery.sh /system/etc/init.d/99SuperSUDaemon /cache/install-recovery.sh \ - /system/.supersu /cache/.supersu /data/.supersu \ - /system/app/Superuser.apk /system/app/SuperSU /cache/Superuser.apk 2>/dev/null - fi -} - -api_level_arch_detect() { - API=`grep_prop ro.build.version.sdk` - ABI=`grep_prop ro.product.cpu.abi | cut -c-3` - ABI2=`grep_prop ro.product.cpu.abi2 | cut -c-3` - ABILONG=`grep_prop ro.product.cpu.abi` - - ARCH=arm - IS64BIT=false - if [ "$ABI" = "x86" ]; then ARCH=x86; fi; - if [ "$ABI2" = "x86" ]; then ARCH=x86; fi; - if [ "$ABILONG" = "arm64-v8a" ]; then ARCH=arm64; IS64BIT=true; fi; - if [ "$ABILONG" = "x86_64" ]; then ARCH=x64; IS64BIT=true; fi; -} - -recovery_actions() { - # TWRP bug fix - mount -o bind /dev/urandom /dev/random - # Temporarily block out all custom recovery binaries/libs - mv /sbin /sbin_tmp - # Add all possible library paths - OLD_LD_PATH=$LD_LIBRARY_PATH - $IS64BIT && export LD_LIBRARY_PATH=/system/lib64:/system/vendor/lib64 || export LD_LIBRARY_PATH=/system/lib:/system/vendor/lib -} - -recovery_cleanup() { - mv /sbin_tmp /sbin - # Clear LD_LIBRARY_PATH - export LD_LIBRARY_PATH=$OLD_LD_PATH - ui_print "- Unmounting partitions" - umount -l /system - umount -l /vendor 2>/dev/null - umount -l /dev/random -} - -abort() { - ui_print "$1" - mv /sbin_tmp /sbin 2>/dev/null - exit 1 -} - -set_perm() { - chown $2:$3 $1 || exit 1 - chmod $4 $1 || exit 1 - if [ ! -z $5 ]; then - chcon $5 $1 2>/dev/null - else - chcon 'u:object_r:system_file:s0' $1 2>/dev/null - fi -} - -set_perm_recursive() { - find $1 -type d 2>/dev/null | while read dir; do - set_perm $dir $2 $3 $4 $6 - done - find $1 -type f 2>/dev/null | while read file; do - set_perm $file $2 $3 $5 $6 - done -} - -mktouch() { - mkdir -p ${1%/*} - if [ -z "$2" ]; then - touch $1 - else - echo $2 > $1 - fi - chmod 644 $1 -} - -request_size_check() { - reqSizeM=`du -s $1 | cut -f1` - reqSizeM=$((reqSizeM / 1024 + 1)) -} - -image_size_check() { - SIZE="`$MAGISKBIN/magisk --imgsize $IMG`" - curUsedM=`echo "$SIZE" | cut -d" " -f1` - curSizeM=`echo "$SIZE" | cut -d" " -f2` - curFreeM=$((curSizeM - curUsedM)) -} - diff --git a/app/src/main/jniLibs/armeabi-v7a/libbusybox.so b/app/src/main/jniLibs/armeabi-v7a/libbusybox.so deleted file mode 100644 index b0e490cf3..000000000 Binary files a/app/src/main/jniLibs/armeabi-v7a/libbusybox.so and /dev/null differ diff --git a/app/src/main/jniLibs/x86/libbusybox.so b/app/src/main/jniLibs/x86/libbusybox.so deleted file mode 100644 index ccc3d7de7..000000000 Binary files a/app/src/main/jniLibs/x86/libbusybox.so and /dev/null differ