Fuse busybox into update-binary and remove from Magisk Manager APK

This commit is contained in:
topjohnwu
2017-08-02 02:21:50 +08:00
parent 5fab15fee5
commit b37bad35c2
8 changed files with 105 additions and 80 deletions

View File

@ -1,4 +1,4 @@
#!/sbin/sh
#MAGISK
##########################################################################################
#
# Magisk Flash Script
@ -31,10 +31,6 @@ umask 022
OUTFD=$2
ZIP=$3
rm -rf $TMPDIR 2>/dev/null
mkdir -p $INSTALLER
unzip -o "$ZIP" -d $INSTALLER 2>/dev/null
if [ ! -d "$COMMONDIR" ]; then
echo "! Unable to extract zip file!"
exit 1
@ -92,16 +88,14 @@ rm -rf $MAGISKBIN 2>/dev/null
mkdir -p $MAGISKBIN
cp -af $BINDIR/. $COMMONDIR/. $MAGISKBIN
cp -af $CHROMEDIR $MAGISKBIN
# Extract busybox
[ $ARCH = "arm" -o $ARCH = "arm64" ] && BBPATH=lib/armeabi-v7a || BBPATH=lib/x86
unzip -p $INSTALLER/common/magisk.apk $BBPATH/libbusybox.so > $MAGISKBIN/busybox
cp -af $TMPDIR/bin/busybox $MAGISKBIN/busybox
chmod -R 755 $MAGISKBIN
# addon.d
if [ -d /system/addon.d ]; then
ui_print "- Adding addon.d survival script"
mount -o rw,remount /system
cp $INSTALLER/addon.d/99-magisk.sh /system/addon.d/99-magisk.sh
cp -af $INSTALLER/addon.d/99-magisk.sh /system/addon.d/99-magisk.sh
chmod 755 /system/addon.d/99-magisk.sh
fi

View File

@ -39,11 +39,6 @@ abort_wrap() {
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
@ -52,6 +47,11 @@ CHROMEDIR=$MAGISKBIN/chromeos
# Default permissions
umask 022
if [ ! -f $MAGISKBIN/magiskboot -o ! -f $MAGISKBIN/util_functions.sh ]; then
ui_print_wrap "! Cannot find $MAGISKBIN"
exit 1
fi
# Load utility functions
. $MAGISKBIN/util_functions.sh

View File

@ -3,7 +3,7 @@
#
# Magisk Uninstaller (used in recovery)
# by topjohnwu
#
#
# This script will load the real uninstaller in a flashable zip
#
##########################################################################################
@ -13,17 +13,16 @@
##########################################################################################
BOOTMODE=false
INSTALLER=/tmp/uninstall
# This path should work in any cases
TMPDIR=/dev/tmp
INSTALLER=$TMPDIR/install
# Default permissions
umask 022
OUTFD=$2
ZIP=$3
rm -rf $INSTALLER 2>/dev/null
mkdir -p $INSTALLER
unzip -o "$ZIP" -d $INSTALLER 2>/dev/null
if [ ! -f $INSTALLER/util_functions.sh ]; then
echo "! Failed: Unable to extract zip file!"
exit 1
@ -68,6 +67,7 @@ if is_mounted /data; then
mkdir -p $MAGISKBIN
cp -af $BINDIR/. $MAGISKBIN
cp -af $CHROMEDIR $MAGISKBIN
cp -af $TMPDIR/bin/busybox $MAGISKBIN/busybox
cp -af $INSTALLER/util_functions.sh $MAGISKBIN
chmod -R 755 $MAGISKBIN
# Run the acttual uninstallation

15
scripts/update_binary.sh Normal file
View File

@ -0,0 +1,15 @@
# BB_ARM and BB_X86 should be generated in build.py
TMPDIR=/dev/tmp
INSTALLER=$TMPDIR/install
BBDIR=$TMPDIR/bin
BBBIN=$BBDIR/busybox
rm -rf $TMPDIR 2>/dev/null; mkdir -p $BBDIR; touch $BBBIN; chmod 755 $BBBIN
echo $BB_ARM | base64 -d | gzip -d > $BBBIN
if ! $BBBIN --install -s $TMPDIR/bin >/dev/null 2>&1; then
echo $BB_X86 | base64 -d | gzip -d > $BBBIN
$BBBIN --install -s $TMPDIR/bin >/dev/null 2>&1 || exit 1
fi
export PATH=$BBDIR:$PATH
mkdir -p $INSTALLER
unzip -o "$3" -d $INSTALLER
exec sh $INSTALLER/META-INF/com/google/android/updater-script $@

View File

@ -127,11 +127,13 @@ recovery_actions() {
# Preserve environment varibles
OLD_PATH=$PATH
OLD_LD_PATH=$LD_LIBRARY_PATH
# Add busybox to PATH
mkdir -p $TMPDIR/bin
ln -s $MAGISKBIN/busybox $TMPDIR/bin/busybox
$MAGISKBIN/busybox --install -s $TMPDIR/bin
export PATH=$TMPDIR/bin:$PATH
if [ ! -d $TMPDIR/bin ]; then
# Add busybox to PATH
mkdir -p $TMPDIR/bin
ln -s $MAGISKBIN/busybox $TMPDIR/bin/busybox
$MAGISKBIN/busybox --install -s $TMPDIR/bin
export PATH=$TMPDIR/bin:$PATH
fi
# Temporarily block out all custom recovery binaries/libs
mv /sbin /sbin_tmp
# Add all possible library paths