Update uninstall script

This commit is contained in:
topjohnwu 2017-03-20 04:17:04 +08:00
parent cc77d93918
commit 324a0dd38f
3 changed files with 84 additions and 101 deletions

View File

@ -47,10 +47,10 @@ repositories {
dependencies { dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs') compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:recyclerview-v7:25.2.0' compile 'com.android.support:recyclerview-v7:25.3.0'
compile 'com.android.support:cardview-v7:25.2.0' compile 'com.android.support:cardview-v7:25.3.0'
compile 'com.android.support:design:25.2.0' compile 'com.android.support:design:25.3.0'
compile 'com.android.support:support-v4:25.2.0' compile 'com.android.support:support-v4:25.3.0'
compile 'com.jakewharton:butterknife:8.5.1' compile 'com.jakewharton:butterknife:8.5.1'
compile 'com.github.clans:fab:1.6.4' compile 'com.github.clans:fab:1.6.4'
compile 'com.thoughtbot:expandablerecyclerview:1.4' compile 'com.thoughtbot:expandablerecyclerview:1.4'

View File

@ -1,21 +1,20 @@
#!/system/bin/sh
[ -z $BOOTMODE ] && BOOTMODE=false [ -z $BOOTMODE ] && BOOTMODE=false
TMPDIR=/tmp
($BOOTMODE) && TMPDIR=/dev/tmp
BINDIR=/data/magisk # This path should work in any cases
CHROMEDIR=$BINDIR/chromeos TMPDIR=/dev/tmp
NEWBOOT=$TMPDIR/boottmp/new-boot.img BOOTTMP=$TMPDIR/boottmp
UNPACKDIR=$TMPDIR/boottmp/bootunpack MAGISKBIN=/data/magisk
RAMDISK=$TMPDIR/boottmp/ramdisk CHROMEDIR=$MAGISKBIN/chromeos
SYSTEMLIB=/system/lib SYSTEMLIB=/system/lib
[ -d /system/lib64 ] && SYSTEMLIB=/system/lib64 [ -d /system/lib64 ] && SYSTEMLIB=/system/lib64
ui_print() { # Default permissions
echo "$1" umask 022
ui_print_wrapper() {
type ui_print >/dev/null && ui_print "$1" || echo "$1"
} }
grep_prop() { grep_prop() {
@ -25,7 +24,7 @@ grep_prop() {
if [ -z "$FILES" ]; then if [ -z "$FILES" ]; then
FILES='/system/build.prop' FILES='/system/build.prop'
fi fi
cat $FILES 2>/dev/null | sed -n $REGEX | head -n 1 cat $FILES 2>/dev/null | sed -n "$REGEX" | head -n 1
} }
find_boot_image() { find_boot_image() {
@ -42,109 +41,93 @@ find_boot_image() {
fi fi
} }
unpack_boot() { # Environments
rm -rf $UNPACKDIR $RAMDISK 2>/dev/null
mkdir -p $UNPACKDIR
mkdir -p $RAMDISK
cd $UNPACKDIR
LD_LIBRARY_PATH=$SYSTEMLIB $BINDIR/bootimgtools --extract $1
cd $RAMDISK
$BINDIR/busybox gunzip -c < $UNPACKDIR/ramdisk.gz | cpio -i
}
repack_boot() {
cd $RAMDISK
find . | cpio -o -H newc 2>/dev/null | gzip -9 > $UNPACKDIR/ramdisk.gz
cd $UNPACKDIR
LD_LIBRARY_PATH=$SYSTEMLIB $BINDIR/bootimgtools --repack $BOOTIMAGE
if [ -f chromeos ]; then
echo " " > config
echo " " > bootloader
LD_LIBRARY_PATH=$SYSTEMLIB $CHROMEDIR/futility vbutil_kernel --pack new-boot.img.signed --keyblock $CHROMEDIR/kernel.keyblock --signprivate $CHROMEDIR/kernel_data_key.vbprivk --version 1 --vmlinuz new-boot.img --config config --arch arm --bootloader bootloader --flags 0x1
rm -f new-boot.img
mv new-boot.img.signed new-boot.img
fi
if ($SAMSUNG); then
SAMSUNG_CHECK=$(cat new-boot.img | grep SEANDROIDENFORCE)
if [ $? -ne 0 ]; then
echo -n "SEANDROIDENFORCE" >> new-boot.img
fi
fi
if ($LGE_G); then
# Prevent secure boot error on LG G2/G3.
# Just for know, It's a pattern which bootloader verifies at boot. Thanks to LG hackers.
echo -n -e "\x41\xa9\xe4\x67\x74\x4d\x1d\x1b\xa4\x29\xf2\xec\xea\x65\x52\x79" >> new-boot.img
fi
mv new-boot.img $NEWBOOT
}
# Set permissions # Set permissions
chmod -R 755 $CHROMEDIR/futility $BINDIR chmod -R 755 $CHROMEDIR/futility $MAGISKBIN 2>/dev/null
# Temporary busybox for installation
mkdir -p $TMPDIR/busybox
$MAGISKBIN/busybox --install -s $TMPDIR/busybox
rm -f $TMPDIR/busybox/su $TMPDIR/busybox/sh $TMPDIR/busybox/reboot
PATH=$TMPDIR/busybox:$PATH
# Find the boot image # Find the boot image
find_boot_image find_boot_image
if [ -z "$BOOTIMAGE" ]; then if [ -z "$BOOTIMAGE" ]; then
ui_print "! Unable to detect boot image" ui_print_wrapper "! Unable to detect boot image"
exit 1 exit 1
fi fi
ui_print "- Found Boot Image: $BOOTIMAGE" ui_print_wrapper "- Found Boot Image: $BOOTIMAGE"
# Detect special vendors rm -rf $BOOTTMP 2>/dev/null
SAMSUNG=false mkdir -p $BOOTTMP
SAMSUNG_CHECK=$(cat /system/build.prop | grep "ro.build.fingerprint=" | grep -i "samsung") cd $BOOTTMP
if [ $? -eq 0 ]; then
SAMSUNG=true ui_print_wrapper "- Unpacking boot image"
fi LD_LIBRARY_PATH=$SYSTEMLIB $MAGISKBIN/magiskboot --unpack $BOOTIMAGE
LGE_G=false if [ $? -ne 0 ]; then
RBRAND=$(grep_prop ro.product.brand) ui_print_wrapper "! Unable to unpack boot image"
RMODEL=$(grep_prop ro.product.device) exit 1
if [ "$RBRAND" = "lge" ] || [ "$RBRAND" = "LGE" ]; then
if [ "$RMODEL" = "*D80*" ] ||
[ "$RMODEL" = "*S98*" ] ||
[ "$RMODEL" = "*D85*" ] ||
[ "$RMODEL" = "*F40*" ]; then
LGE_G=true
ui_print "! Bump device detected"
fi
fi fi
# First unpack the boot image # Update our previous backup to new format if exists
unpack_boot $BOOTIMAGE if [ -f /data/stock_boot.img ]; then
SHA1=`LD_LIBRARY_PATH=$SYSTEMLIB $MAGISKBIN/magiskboot --sha1 /data/stock_boot.img | tail -n 1`
STOCKDUMP=/data/stock_boot_${SHA1}.img
mv /data/stock_boot.img $STOCKDUMP
LD_LIBRARY_PATH=$SYSTEMLIB $MAGISKBIN/magiskboot --compress $STOCKDUMP
fi
SUPERSU=false # Detect boot image state
[ -f sbin/launch_daemonsu.sh ] && SUPERSU=true LD_LIBRARY_PATH=$SYSTEMLIB $MAGISKBIN/magiskboot --cpio-test ramdisk.cpio
case $? in
if ($SUPERSU); then 0 )
ui_print "- SuperSU patched image detected" ui_print_wrapper "! Magisk is not installed!"
rm -f magisk sbin/init.magisk.rc sbin/magic_mask.sh ui_print_wrapper "! Nothing to uninstall"
repack_boot exit
else ;;
if [ -f /data/stock_boot.img ]; then 1 )
ui_print "- Boot image backup found!" # Find SHA1 of stock boot image
NEWBOOT=/data/stock_boot.img if [ -z $SHA1 ]; then
else LD_LIBRARY_PATH=$SYSTEMLIB $MAGISKBIN/magiskboot --cpio-extract ramdisk.cpio init.magisk.rc init.magisk.rc
ui_print "! Boot image backup unavailable" SHA1=`grep_prop "# STOCKSHA1" init.magisk.rc`
if [ -d ".backup" ]; then [ ! -z $SHA1 ] && STOCKDUMP=/data/stock_boot_${SHA1}.img
ui_print "- Restoring ramdisk with backup" rm -f init.magisk.rc
cp -af .backup/. .
fi fi
rm -f magisk sbin/init.magisk.rc sbin/magic_mask.sh if [ -f ${STOCKDUMP}.gz ]; then
repack_boot ui_print_wrapper "- Boot image backup found!"
fi LD_LIBRARY_PATH=$SYSTEMLIB $MAGISKBIN/magiskboot --decompress ${STOCKDUMP}.gz stock_boot.img
else
ui_print_wrapper "! Boot image backup unavailable"
ui_print_wrapper "- Restoring ramdisk with backup"
LD_LIBRARY_PATH=$SYSTEMLIB $MAGISKBIN/magiskboot --cpio-restore ramdisk.cpio
LD_LIBRARY_PATH=$SYSTEMLIB $MAGISKBIN/magiskboot --repack $BOOTIMAGE stock_boot.img
fi
;;
2 )
ui_print_wrapper "- SuperSU patched image detected"
LD_LIBRARY_PATH=$SYSTEMLIB $MAGISKBIN/magiskboot --cpio-restore ramdisk.cpio
LD_LIBRARY_PATH=$SYSTEMLIB $MAGISKBIN/magiskboot --repack $BOOTIMAGE stock_boot.img
;;
esac
# Sign chromeos boot
if [ -f chromeos ]; then
echo > config
echo > bootloader
LD_LIBRARY_PATH=$SYSTEMLIB $CHROMEDIR/futility vbutil_kernel --pack stock_boot.img.signed --keyblock $CHROMEDIR/kernel.keyblock --signprivate $CHROMEDIR/kernel_data_key.vbprivk --version 1 --vmlinuz stock_boot.img --config config --arch arm --bootloader bootloader --flags 0x1
rm -f stock_boot.img
mv stock_boot.img.signed stock_boot.img
fi fi
chmod 644 $NEWBOOT ui_print_wrapper "- Flashing stock/reverted image"
ui_print "- Flashing stock/reverted image"
[ ! -L "$BOOTIMAGE" ] && dd if=/dev/zero of=$BOOTIMAGE bs=4096 2>/dev/null [ ! -L "$BOOTIMAGE" ] && dd if=/dev/zero of=$BOOTIMAGE bs=4096 2>/dev/null
dd if=$NEWBOOT of=$BOOTIMAGE bs=4096 dd if=stock_boot.img of=$BOOTIMAGE bs=4096
ui_print "- Removing Magisk files" ui_print_wrapper "- Removing Magisk files"
rm -rf /cache/magisk.log /cache/last_magisk.log /cache/magiskhide.log /cache/.disable_magisk \ 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 \ /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.apk /data/magisk.apk /data/magisk.img /data/magisk_merge.img \
/data/busybox /data/magisk /data/custom_ramdisk_patch.sh 2>/dev/null /data/busybox /data/magisk /data/custom_ramdisk_patch.sh 2>/dev/null
($BOOTMODE) && reboot $BOOTMODE && reboot