Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
Magisk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Magisk
Commits
3283439f
Commit
3283439f
authored
Jun 26, 2018
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
New uninstaller
parent
c8216f9b
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
90 additions
and
156 deletions
+90
-156
app
app
+1
-1
build.py
build.py
+9
-13
magisk_uninstaller.sh
scripts/magisk_uninstaller.sh
+79
-38
uninstaller_loader.sh
scripts/uninstaller_loader.sh
+0
-82
update_binary.sh
scripts/update_binary.sh
+1
-1
util_functions.sh
scripts/util_functions.sh
+0
-21
No files found.
app
@
e86015ba
Subproject commit
4ff39f88172ce7da33ad0a5063a7c75894f6e48c
Subproject commit
e86015badc0d6aa3b633bd9cb50620bbf05819b6
build.py
View file @
3283439f
...
@@ -106,7 +106,7 @@ def build_binary(args):
...
@@ -106,7 +106,7 @@ def build_binary(args):
header
(
'* Building binaries: '
+
' '
.
join
(
targets
))
header
(
'* Building binaries: '
+
' '
.
join
(
targets
))
# Force update logging.h timestamp to trigger recompilation for the flags to make a difference
# Force update logging.h timestamp to trigger recompilation for the flags to make a difference
os
.
utime
(
os
.
path
.
join
(
'native'
,
'jni'
,
'include'
,
'logging.h'
))
# Basic flags
# Basic flags
base_flags
=
'MAGISK_VERSION=
\"
{}
\"
MAGISK_VER_CODE={} MAGISK_DEBUG={}'
.
format
(
config
[
'version'
],
config
[
'versionCode'
],
base_flags
=
'MAGISK_VERSION=
\"
{}
\"
MAGISK_VER_CODE={} MAGISK_DEBUG={}'
.
format
(
config
[
'version'
],
config
[
'versionCode'
],
...
@@ -196,10 +196,9 @@ def build_apk(args):
...
@@ -196,10 +196,9 @@ def build_apk(args):
header
(
'* Building Magisk Manager'
)
header
(
'* Building Magisk Manager'
)
mkdir
(
os
.
path
.
join
(
'app'
,
'src'
,
'full'
,
'assets'
))
mkdir
(
os
.
path
.
join
(
'app'
,
'src'
,
'full'
,
'assets'
))
for
script
in
[
'magisk_uninstaller.sh'
,
'util_functions.sh'
]:
source
=
os
.
path
.
join
(
'scripts'
,
'util_functions.sh'
)
source
=
os
.
path
.
join
(
'scripts'
,
script
)
target
=
os
.
path
.
join
(
'app'
,
'src'
,
'full'
,
'assets'
,
'util_functions.sh'
)
target
=
os
.
path
.
join
(
'app'
,
'src'
,
'full'
,
'assets'
,
script
)
cp
(
source
,
target
)
cp
(
source
,
target
)
if
args
.
release
:
if
args
.
release
:
if
not
os
.
path
.
exists
(
'release-key.jks'
):
if
not
os
.
path
.
exists
(
'release-key.jks'
):
...
@@ -354,19 +353,16 @@ def zip_uninstaller(args):
...
@@ -354,19 +353,16 @@ def zip_uninstaller(args):
print
(
'zip: '
+
target
)
print
(
'zip: '
+
target
)
zipf
.
writestr
(
target
,
gen_update_binary
())
zipf
.
writestr
(
target
,
gen_update_binary
())
# updater-script
# updater-script
source
=
os
.
path
.
join
(
'scripts'
,
'
uninstaller_load
er.sh'
)
source
=
os
.
path
.
join
(
'scripts'
,
'
magisk_uninstall
er.sh'
)
target
=
os
.
path
.
join
(
'META-INF'
,
'com'
,
'google'
,
'android'
,
'updater-script'
)
target
=
os
.
path
.
join
(
'META-INF'
,
'com'
,
'google'
,
'android'
,
'updater-script'
)
zip_with_msg
(
zipf
,
source
,
target
)
zip_with_msg
(
zipf
,
source
,
target
)
# Binaries
# Binaries
for
lib_dir
,
zip_dir
in
[(
'armeabi-v7a'
,
'arm'
),
(
'x86'
,
'x86'
)]:
for
lib_dir
,
zip_dir
in
[(
'armeabi-v7a'
,
'arm'
),
(
'x86'
,
'x86'
)]:
source
=
os
.
path
.
join
(
'native'
,
'out'
,
lib_dir
,
'magiskboot'
)
for
bin
in
[
'magisk'
,
'magiskboot'
]:
target
=
os
.
path
.
join
(
zip_dir
,
'magiskboot'
)
source
=
os
.
path
.
join
(
'native'
,
'out'
,
lib_dir
,
bin
)
zip_with_msg
(
zipf
,
source
,
target
)
target
=
os
.
path
.
join
(
zip_dir
,
bin
)
zip_with_msg
(
zipf
,
source
,
target
)
source
=
os
.
path
.
join
(
'scripts'
,
'magisk_uninstaller.sh'
)
target
=
'magisk_uninstaller.sh'
zip_with_msg
(
zipf
,
source
,
target
)
# Scripts
# Scripts
# util_functions.sh
# util_functions.sh
...
...
scripts/magisk_uninstaller.sh
View file @
3283439f
#
!/system/bin/sh
#
MAGISK
##########################################################################################
##########################################################################################
#
#
# Magisk Uninstaller
# Magisk Uninstaller
(used in recovery)
# by topjohnwu
# by topjohnwu
#
#
# This script can be placed in /cache/magisk_uninstaller.sh
# This script will load the real uninstaller in a flashable zip
# 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)
#
#
##########################################################################################
##########################################################################################
[
-z
$BOOTMODE
]
&&
BOOTMODE
=
false
##########################################################################################
# Preparation
##########################################################################################
# This path should work in any cases
TMPDIR
=
/dev/tmp
INSTALLER
=
$TMPDIR
/install
CHROMEDIR
=
$INSTALLER
/chromeos
# Default permissions
umask
022
[
-d
/data/adb/magisk
]
&&
MAGISKBIN
=
/data/adb/magisk
||
MAGISKBIN
=
/data/magisk
OUTFD
=
$2
CHROMEDIR
=
$MAGISKBIN
/chromeos
ZIP
=
$3
if
[
!
-f
$
MAGISKBIN
/magiskboot
-o
!
-f
$MAGISKBIN
/util_functions.sh
]
;
then
if
[
!
-f
$
INSTALLER
/util_functions.sh
]
;
then
echo
"!
Cannot find
$MAGISKBIN
"
echo
"!
Unable to extract zip file!
"
exit
1
exit
1
fi
fi
if
$BOOTMODE
;
then
# Load utility functions
# Load utility functions
.
$INSTALLER
/util_functions.sh
.
$MAGISKBIN
/util_functions.sh
BOOTMODE
=
true
get_outfd
boot_actions
fi
ui_print
"************************"
ui_print
" Magisk Uninstaller "
ui_print
"************************"
is_mounted /data
||
mount /data
||
abort
"! Unable to mount partitions"
is_mounted /cache
||
mount /cache 2>/dev/null
mount_partitions
mount_partitions
api_level_arch_detect
ui_print
"- Device platform:
$ARCH
"
MAGISKBIN
=
$INSTALLER
/
$ARCH32
mv
$CHROMEDIR
$MAGISKBIN
chmod
-R
755
$MAGISKBIN
check_data
$DATA_DE
||
abort
"! Cannot access /data, please uninstall with Magisk Manager"
$BOOTMODE
||
recovery_actions
##########################################################################################
# Uninstall
##########################################################################################
find_boot_image
find_boot_image
find_dtbo_image
find_dtbo_image
...
@@ -64,7 +81,7 @@ case $? in
...
@@ -64,7 +81,7 @@ case $? in
;;
;;
4
)
4
)
ui_print
"! Sony ELF32 format detected"
ui_print
"! Sony ELF32 format detected"
abort
"! Please use BootBridge from @AdrianDC
to flash Magisk
"
abort
"! Please use BootBridge from @AdrianDC"
;;
;;
5
)
5
)
ui_print
"! Sony ELF64 format detected"
ui_print
"! Sony ELF64 format detected"
...
@@ -80,18 +97,26 @@ case $? in
...
@@ -80,18 +97,26 @@ case $? in
;;
;;
1|2
)
# Magisk patched
1|2
)
# Magisk patched
ui_print
"- Magisk patched image detected"
ui_print
"- Magisk patched image detected"
./magisk
--unlock-blocks
2>/dev/null
# Find SHA1 of stock boot image
# Find SHA1 of stock boot image
[
-z
$SHA1
]
&&
SHA1
=
`
./magiskboot
--cpio
ramdisk.cpio sha1 2>/dev/null
`
[
-z
$SHA1
]
&&
SHA1
=
`
./magiskboot
--cpio
ramdisk.cpio sha1 2>/dev/null
`
OK
=
false
STOCKBOOT
=
/data/stock_boot_
${
SHA1
}
.img.gz
[
!
-z
$SHA1
]
&&
restore_imgs
$SHA1
&&
OK
=
true
STOCKDTBO
=
/data/stock_dtbo.img.gz
if
!
$OK
;
then
if
[
-f
$STOCKBOOT
]
;
then
ui_print
"- Restoring stock boot image"
gzip
-d
<
$STOCKBOOT
|
cat
- /dev/zero
>
$BOOTIMAGE
2>/dev/null
if
[
-f
$DTBOIMAGE
-a
-f
$STOCKDTBO
]
;
then
ui_print
"- Restoring stock dtbo image"
gzip
-d
<
$STOCKDTBO
>
$DTBOIMAGE
fi
else
ui_print
"! Boot image backup unavailable"
ui_print
"! Boot image backup unavailable"
ui_print
"- Restoring ramdisk with internal backup"
ui_print
"- Restoring ramdisk with internal backup"
./magiskboot
--cpio
ramdisk.cpio restore
./magiskboot
--cpio
ramdisk.cpio restore
./magiskboot
--repack
$BOOTIMAGE
./magiskboot
--repack
$BOOTIMAGE
# Sign chromeos boot
# Sign chromeos boot
$CHROMEOS
&&
sign_chromeos
$CHROMEOS
&&
sign_chromeos
flash_boot_image new-boot.img
"
$BOOTIMAGE
"
flash_boot_image new-boot.img
$BOOTIMAGE
fi
fi
;;
;;
3
)
# Other patched
3
)
# Other patched
...
@@ -100,17 +125,33 @@ case $? in
...
@@ -100,17 +125,33 @@ case $? in
;;
;;
esac
esac
cd
/
ui_print
"- Removing Magisk files"
ui_print
"- Removing Magisk files"
rm
-rf
/cache/
*
magisk
*
/cache/unblock /data/
*
magisk
*
/data/cache/
*
magisk
*
/data/property/
*
magisk
*
\
rm
-rf
/cache/
*
magisk
*
/cache/unblock /data/
*
magisk
*
/data/cache/
*
magisk
*
/data/property/
*
magisk
*
\
/data/Magisk.apk /data/busybox /data/custom_ramdisk_patch.sh /data/app/com.topjohnwu.magisk
*
\
/data/Magisk.apk /data/busybox /data/custom_ramdisk_patch.sh /data/adb/
*
magisk
*
2>/dev/null
/data/user
*
/
*
/magisk.db /data/user
*
/
*
/com.topjohnwu.magisk /data/user
*
/
*
/.tmp.magisk.config
\
/data/adb/
*
magisk
*
2>/dev/null
if
[
-f
/system/addon.d/99-magisk.sh
]
;
then
if
[
-f
/system/addon.d/99-magisk.sh
]
;
then
mount
-o
rw,remount /system
mount
-o
rw,remount /system
rm
-f
/system/addon.d/99-magisk.sh
rm
-f
/system/addon.d/99-magisk.sh
fi
fi
$BOOTMODE
&&
/system/bin/reboot
# Remove persist props (for Android P+ using protobuf)
for
prop
in
`
./magisk resetprop
-p
|
grep
-E
'persist.*magisk'
|
grep
-oE
'^\[[a-zA-Z0-9.@:_-]+\]'
|
tr
-d
'[]'
`
;
do
./magisk resetprop
-p
--delete
$prop
done
cd
/
if
$BOOTMODE
;
then
ui_print
"**********************************************"
ui_print
"* Magisk Manager will uninstall itself, and *"
ui_print
"* the device will reboot after a few seconds *"
ui_print
"**********************************************"
(
sleep
8
;
/system/bin/reboot
)
&
else
rm
-rf
/data/user
*
/
*
/
*
magisk
*
/data/app/
*
magisk
*
recovery_cleanup
ui_print
"- Done"
fi
rm
-rf
$TMPDIR
exit
0
scripts/uninstaller_loader.sh
deleted
100644 → 0
View file @
c8216f9b
#!/sbin/sh
##########################################################################################
#
# Magisk Uninstaller (used in recovery)
# by topjohnwu
#
# This script will load the real uninstaller in a flashable zip
#
##########################################################################################
##########################################################################################
# Preparation
##########################################################################################
# This path should work in any cases
TMPDIR
=
/dev/tmp
INSTALLER
=
$TMPDIR
/install
CHROMEDIR
=
$INSTALLER
/chromeos
# Default permissions
umask
022
OUTFD
=
$2
ZIP
=
$3
if
[
!
-f
$INSTALLER
/util_functions.sh
]
;
then
echo
"! Unable to extract zip file!"
exit
1
fi
# Load utility functions
.
$INSTALLER
/util_functions.sh
get_outfd
##########################################################################################
# Main
##########################################################################################
ui_print
"************************"
ui_print
" Magisk Uninstaller "
ui_print
"************************"
is_mounted /data
||
mount /data
||
abort
"! Unable to mount partitions"
is_mounted /cache
||
mount /cache 2>/dev/null
api_level_arch_detect
ui_print
"- Device platform:
$ARCH
"
BINDIR
=
$INSTALLER
/
$ARCH32
chmod
-R
755
$CHROMEDIR
$BINDIR
##########################################################################################
# Detection all done, start installing
##########################################################################################
check_data
if
$DATA_DE
;
then
recovery_actions
# Save our stock boot image dump before removing it
mv
$MAGISKBIN
/stock_boot
*
/data 2>/dev/null
rm
-rf
$MAGISKBIN
2>/dev/null
mkdir
-p
$MAGISKBIN
cp
-af
$BINDIR
/.
$CHROMEDIR
$TMPDIR
/bin/busybox
$INSTALLER
/util_functions.sh
$MAGISKBIN
chmod
-R
755
$MAGISKBIN
# Run the actual uninstallation
.
$INSTALLER
/magisk_uninstaller.sh
recovery_cleanup
else
ui_print
"! Data unavailable"
ui_print
"! Placing uninstall script to /cache"
ui_print
"! The device might reboot multiple times"
cp
-af
$INSTALLER
/magisk_uninstaller.sh /cache/magisk_uninstaller.sh
ui_print
"- Rebooting....."
sleep
5
reboot
fi
ui_print
"- Done"
exit
0
scripts/update_binary.sh
View file @
3283439f
...
@@ -34,7 +34,7 @@ case "$1" in
...
@@ -34,7 +34,7 @@ case "$1" in
;;
;;
*
)
*
)
TMPDIR
=
/dev/tmp
;
rm
-rf
$TMPDIR
2>/dev/null
;
setup_bb
TMPDIR
=
/dev/tmp
;
rm
-rf
$TMPDIR
2>/dev/null
;
setup_bb
INSTALLER
=
$TMPDIR
/install
;
mkdir
-p
$INSTALLER
;
unzip
-o
"
$3
"
-d
$INSTALLER
INSTALLER
=
$TMPDIR
/install
;
mkdir
-p
$INSTALLER
;
unzip
-o
"
$3
"
-d
$INSTALLER
>
&2
exec
sh
$INSTALLER
/META-INF/com/google/android/updater-script
$@
exec
sh
$INSTALLER
/META-INF/com/google/android/updater-script
$@
;;
;;
esac
esac
scripts/util_functions.sh
View file @
3283439f
...
@@ -217,27 +217,6 @@ patch_dtbo_image() {
...
@@ -217,27 +217,6 @@ patch_dtbo_image() {
return
1
return
1
}
}
restore_imgs
()
{
STOCKBOOT
=
/data/stock_boot_
${
1
}
.img.gz
STOCKDTBO
=
/data/stock_dtbo.img.gz
# Make sure all blocks are writable
$MAGISKBIN
/magisk
--unlock-blocks
2>/dev/null
find_dtbo_image
if
[
!
-z
"
$DTBOIMAGE
"
-a
-f
"
$STOCKDTBO
"
]
;
then
ui_print
"- Restoring stock dtbo image"
gzip
-d
<
$STOCKDTBO
|
dd
of
=
$DTBOIMAGE
fi
BOOTSIGNED
=
false
find_boot_image
if
[
!
-z
"
$BOOTIMAGE
"
-a
-f
"
$STOCKBOOT
"
]
;
then
ui_print
"- Restoring stock boot image"
gzip
-d
<
$STOCKBOOT
|
cat
- /dev/zero 2>/dev/null |
dd
of
=
"
$BOOTIMAGE
"
bs
=
4096 2>/dev/null
return
0
fi
return
1
}
sign_chromeos
()
{
sign_chromeos
()
{
ui_print
"- Signing ChromeOS boot image"
ui_print
"- Signing ChromeOS boot image"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment