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
8833d21a
Commit
8833d21a
authored
Mar 12, 2017
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update scripts for MagiskBoot
parent
1a3c522c
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
331 additions
and
514 deletions
+331
-514
.gitignore
.gitignore
+2
-4
build.cmd
build.cmd
+3
-5
build.sh
build.sh
+3
-5
custom_ramdisk_patch.sh
scripts/custom_ramdisk_patch.sh
+0
-70
flash_script.sh
scripts/flash_script.sh
+188
-290
magisk_uninstaller.sh
scripts/magisk_uninstaller.sh
+73
-114
ramdisk_patch.sh
scripts/ramdisk_patch.sh
+57
-0
update-binary
uninstaller/META-INF/com/google/android/update-binary
+5
-26
No files found.
.gitignore
View file @
8833d21a
...
...
@@ -17,8 +17,6 @@ ziptools/zipadjust
# Generated scripts
uninstaller/common/
zip_static/common/magic_mask.sh
zip_static/common/magisksu.sh
zip_static/common/init.magisk.rc
zip_static/common/custom_ramdisk_patch.sh
zip_static/common/*.sh
zip_static/common/*.rc
zip_static/META-INF/com/google/android/update-binary
build.cmd
View file @
8833d21a
...
...
@@ -75,10 +75,8 @@ EXIT /B %ERRORLEVEL%
2>NUL RMDIR /S /Q zip_static\x64
2>NUL RMDIR /S /Q zip_static\chromeos
2>NUL DEL zip_static\META-INF\com\google\android\update-binary
2>NUL DEL zip_static\common\custom_ramdisk_patch.sh
2>NUL DEL zip_static\common\magisksu.sh
2>NUL DEL zip_static\common\init.magisk.rc
2>NUL DEL zip_static\common\magic_mask.sh
2>NUL DEL zip_static\common\*.sh
2>NUL DEL zip_static\common\*.rc
2>NUL RMDIR /S /Q uninstaller\common
2>NUL RMDIR /S /Q uninstaller\arm
2>NUL RMDIR /S /Q uninstaller\arm64
...
...
@@ -104,7 +102,7 @@ EXIT /B %ERRORLEVEL%
ECHO ************************
ECHO * Copying Files
ECHO ************************
COPY /Y scripts\
custom_ramdisk_patch.sh zip_static\common\custom_
ramdisk_patch.sh
COPY /Y scripts\
ramdisk_patch.sh zip_static\common\
ramdisk_patch.sh
COPY /Y scripts\magisksu.sh zip_static\common\magisksu.sh
COPY /Y scripts\init.magisk.rc zip_static\common\init.magisk.rc
COPY /Y binaries\busybox-arm zip_static\arm\busybox
...
...
build.sh
View file @
8833d21a
...
...
@@ -26,10 +26,8 @@ cleanup() {
rm
-rfv
zip_static/x64
rm
-rfv
zip_static/chromeos
rm
-rfv
zip_static/META-INF/com/google/android/update-binary
rm
-rfv
zip_static/common/custom_ramdisk_patch.sh
rm
-rfv
zip_static/common/magisksu.sh
rm
-rfv
zip_static/common/init.magisk.rc
rm
-rfv
zip_static/common/magic_mask.sh
rm
-rfv
zip_static/common/
*
.sh
rm
-rfv
zip_static/common/
*
.rc
rm
-rfv
uninstaller/common
rm
-rfv
uninstaller/arm
rm
-rfv
uninstaller/arm64
...
...
@@ -77,7 +75,7 @@ zip_package() {
echo
"************************"
echo
"* Copying files"
echo
"************************"
cp
-afv
scripts/
custom_ramdisk_patch.sh zip_static/common/custom_
ramdisk_patch.sh
cp
-afv
scripts/
ramdisk_patch.sh zip_static/common/
ramdisk_patch.sh
cp
-afv
scripts/magisksu.sh zip_static/common/magisksu.sh
cp
-afv
scripts/init.magisk.rc zip_static/common/init.magisk.rc
cp
-afv
binaries/busybox-arm zip_static/arm/busybox
...
...
scripts/custom_ramdisk_patch.sh
deleted
100644 → 0
View file @
1a3c522c
#!/system/bin/sh
RAMDISK
=
$1
BINDIR
=
/data/magisk
[
!
-e
$BINDIR
]
&&
BINDIR
=
/cache/data_bin
[
!
-e
$BINDIR
]
&&
exit
SYSTEMLIB
=
/system/lib
[
-d
/system/lib64
]
&&
SYSTEMLIB
=
/system/lib64
cpio_add
()
{
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-add
$RAMDISK
$RAMDISK
$2
$1
$1
}
cpio_extract
()
{
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-extract
$RAMDISK
$1
$1
}
cpio_mkdir
()
{
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-mkdir
$RAMDISK
$RAMDISK
$2
$1
}
# Recursive
cpio_rm
()
{
if
[
"
$1
"
=
"-r"
]
;
then
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-ls
$RAMDISK
|
grep
"^
$2
/"
|
while
read
i
;
do
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-rm
$RAMDISK
$RAMDISK
$i
done
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-rmdir
$RAMDISK
$RAMDISK
$2
else
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-rm
$RAMDISK
$RAMDISK
$1
fi
}
file_contain
()
{
grep
"
$1
"
"
$2
"
>
/dev/null 2>&1
return
$?
}
rm
-rf
/tmp/magisk/ramdisk 2>/dev/null
mkdir
-p
/tmp/magisk/ramdisk
cd
/tmp/magisk/ramdisk
cat
$RAMDISK
| cpio
-i
# Cleanup SuperSU backups
cpio_rm
-r
.subackup
# Add magisk entrypoint
for
RC
in
init
*
.rc
;
do
if
file_contain
"import /init.environ.rc"
$RC
&&
!
file_contain
"import /init.magisk.rc"
$RC
;
then
sed
-i
"/import
\/
init
\.
environ
\.
rc/iimport /init.magisk.rc"
$RC
cpio_add
$RC
750
fi
if
file_contain
"selinux.reload_policy"
$RC
;
then
sed
-i
"/selinux.reload_policy/d"
$RC
cpio_add
$RC
750
fi
done
# sepolicy patches
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/sepolicy-inject
--load
sepolicy
--save
sepolicy
--minimal
cpio_add sepolicy 644
# Add new items
cp
-af
$BINDIR
/init.magisk.rc init.magisk.rc
cp
-af
$BINDIR
/magic_mask.sh sbin/magic_mask.sh
cpio_mkdir magisk 755
cpio_add init.magisk.rc 750
cpio_add sbin/magic_mask.sh 750
scripts/flash_script.sh
View file @
8833d21a
...
...
@@ -8,22 +8,18 @@
#
##########################################################################################
if
[
-z
"
$BOOTMODE
"
]
;
then
BOOTMODE
=
false
fi
MAGISK
=
true
TMPDIR
=
/tmp
(
$BOOTMODE
)
&&
TMPDIR
=
/dev/tmp
# Detect whether in boot mode
ps |
grep
zygote |
grep
-v
grep
>
/dev/null
&&
BOOTMODE
=
true
||
BOOTMODE
=
false
INSTALLER
=
$TMPDIR
/magisk
# This path should work in any cases
TMPDIR
=
/dev/tmp
INSTALLER
=
$TMPDIR
/magisk
BOOTTMP
=
$TMPDIR
/boottmp
COREDIR
=
/magisk/.core
# Boot Image Variables
CHROMEDIR
=
$INSTALLER
/chromeos
NEWBOOT
=
$TMPDIR
/boottmp/new-boot.img
UNPACKDIR
=
$TMPDIR
/boottmp/bootunpack
RAMDISK
=
$TMPDIR
/boottmp/ramdisk
# Default permissions
umask
022
...
...
@@ -60,7 +56,7 @@ unzip -o "$ZIP"
##########################################################################################
ui_print
()
{
if
(
$BOOTMODE
)
;
then
if
$BOOTMODE
;
then
echo
"
$1
"
else
echo
-n
-e
"ui_print
$1
\n
"
>>
/proc/self/fd/
$OUTFD
...
...
@@ -146,55 +142,7 @@ grep_prop() {
if
[
-z
"
$FILES
"
]
;
then
FILES
=
'/system/build.prop'
fi
cat
$FILES
2>/dev/null |
sed
-n
$REGEX
|
head
-n
1
}
file_contain
()
{
grep
"
$1
"
"
$2
"
>
/dev/null 2>&1
return
$?
}
unpack_boot
()
{
rm
-rf
$UNPACKDIR
$RAMDISK
2>/dev/null
mkdir
-p
$UNPACKDIR
mkdir
-p
$RAMDISK
cd
$UNPACKDIR
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/bootimgtools
--extract
$1
[
!
-f
$UNPACKDIR
/ramdisk.gz
]
&&
return
1
cd
$RAMDISK
gunzip
-c
<
$UNPACKDIR
/ramdisk.gz | cpio
-i
}
repack_boot
()
{
if
(!
$SUPERSU
)
;
then
cd
$RAMDISK
find
.
| cpio
-o
-H
newc 2>/dev/null |
gzip
-9
>
$UNPACKDIR
/ramdisk.gz
fi
cd
$UNPACKDIR
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/bootimgtools
--repack
$BOOTIMAGE
if
[
-f
chromeos
]
;
then
# Copy required tools
cp
-af
$CHROMEDIR
/.
$CPPATH
/chromeos
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
"
\x
41
\x
a9
\x
e4
\x
67
\x
74
\x
4d
\x
1d
\x
1b
\x
a4
\x
29
\x
f2
\x
ec
\x
ea
\x
65
\x
52
\x
79"
>>
new-boot.img
fi
mv
new-boot.img
$NEWBOOT
cat
$FILES
2>/dev/null |
sed
-n
"
$REGEX
"
|
head
-n
1
}
remove_system_su
()
{
...
...
@@ -245,57 +193,25 @@ if [ ! -f '/system/build.prop' ]; then
exit
1
fi
if
[
-z
"
$NOOVERRIDE
"
]
;
then
# read override variables
getvar KEEPVERITY
getvar KEEPFORCEENCRYPT
getvar BOOTIMAGE
fi
# read override variables
getvar KEEPVERITY
getvar KEEPFORCEENCRYPT
getvar BOOTIMAGE
if
[
-z
"
$KEEPVERITY
"
]
;
then
# we don't keep dm-verity by default
KEEPVERITY
=
false
fi
if
[
-z
"
$KEEPFORCEENCRYPT
"
]
;
then
# we don't keep forceencrypt by default
KEEPFORCEENCRYPT
=
false
fi
# Check if system root is installed and remove
remove_system_su
SAMSUNG
=
false
SAMSUNG_CHECK
=
$(
cat
/system/build.prop |
grep
"ro.build.fingerprint="
|
grep
-i
"samsung"
)
if
[
$?
-eq
0
]
;
then
SAMSUNG
=
true
fi
LGE_G
=
false
RBRAND
=
$(
grep_prop ro.product.brand
)
RMODEL
=
$(
grep_prop ro.product.device
)
if
[
"
$RBRAND
"
=
"lge"
]
||
[
"
$RBRAND
"
=
"LGE"
]
;
then
if
[
"
$RMODEL
"
=
"d800"
]
||
[
"
$RMODEL
"
=
"d801"
]
||
[
"
$RMODEL
"
=
"d802"
]
||
[
"
$RMODEL
"
=
"d803"
]
||
[
"
$RMODEL
"
=
"ls980"
]
||
[
"
$RMODEL
"
=
"vs980"
]
||
[
"
$RMODEL
"
=
"l01f"
]
||
[
"
$RMODEL
"
=
"d850"
]
||
[
"
$RMODEL
"
=
"d852"
]
||
[
"
$RMODEL
"
=
"d855"
]
||
[
"
$RMODEL
"
=
"ls990"
]
||
[
"
$RMODEL
"
=
"vs985"
]
||
[
"
$RMODEL
"
=
"f400"
]
;
then
LGE_G
=
true
ui_print
"! Bump device detected"
fi
fi
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
)
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
...
...
@@ -316,7 +232,7 @@ BINDIR=$INSTALLER/$ARCH
chmod
-R
755
$CHROMEDIR
/futility
$BINDIR
SYSTEMLIB
=
/system/lib
(
$IS64BIT
)
&&
SYSTEMLIB
=
/system/lib64
$IS64BIT
&&
SYSTEMLIB
=
/system/lib64
find_boot_image
if
[
-z
"
$BOOTIMAGE
"
]
;
then
...
...
@@ -330,22 +246,16 @@ fi
ui_print
"- Constructing environment"
CPPATH
if
(
is_mounted /data
)
;
then
CPPATH
=
/data/magisk
else
CPPATH
=
/cache/data_bin
fi
is_mounted /data
&&
MAGISKBIN
=
/data/magisk
||
MAGISKBIN
=
/cache/data_bin
# Copy required files
rm
-rf
$
CPPATH
2>/dev/null
mkdir
-p
$
CPPATH
cp
-af
$BINDIR
/busybox
$BINDIR
/sepolicy-inject
$BINDIR
/resetprop
$BINDIR
/
bootimgtools
\
$INSTALLER
/common/
custom_
ramdisk_patch.sh
$INSTALLER
/common/init.magisk.rc
\
$INSTALLER
/common/magic_mask.sh
$
CPPATH
chmod
-R
755
$
CPPATH
chcon
-h
u:object_r:system_file:s0
$
CPPATH
$CPPATH
/
*
rm
-rf
$
MAGISKBIN
2>/dev/null
mkdir
-p
$
MAGISKBIN
cp
-af
$BINDIR
/busybox
$BINDIR
/sepolicy-inject
$BINDIR
/resetprop
$BINDIR
/
magiskboot
\
$INSTALLER
/common/ramdisk_patch.sh
$INSTALLER
/common/init.magisk.rc
\
$INSTALLER
/common/magic_mask.sh
$
MAGISKBIN
chmod
-R
755
$
MAGISKBIN
chcon
-h
u:object_r:system_file:s0
$
MAGISKBIN
$MAGISKBIN
/
*
# Temporary busybox for installation
mkdir
-p
$TMPDIR
/busybox
...
...
@@ -353,13 +263,137 @@ $BINDIR/busybox --install -s $TMPDIR/busybox
rm
-f
$TMPDIR
/busybox/su
$TMPDIR
/busybox/sh
$TMPDIR
/busybox/reboot
PATH
=
$TMPDIR
/busybox:
$PATH
##########################################################################################
# Unpack boot
##########################################################################################
ui_print
"- Found Boot Image:
$BOOTIMAGE
"
rm
-rf
$BOOTTMP
2>/dev/null
mkdir
-p
$BOOTTMP
cd
$BOOTTMP
ui_print
"- Unpacking boot image"
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--unpack
$BOOTIMAGE
if
[
$?
-ne
0
]
;
then
ui_print
"! Unable to unpack boot image"
exit
1
fi
##########################################################################################
# Ramdisk restores
##########################################################################################
# Update our previous backup to new format if exists
if
[
-f
/data/stock_boot.img
]
;
then
SHA1
=
`
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/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
$BINDIR
/magiskboot
--compress
$STOCKDUMP
fi
# Test patch status and do restore, after this section, ramdisk.cpio.orig is guaranteed to exist
SUPERSU
=
false
ui_print
"- Checking patch status"
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-test
ramdisk.cpio
case
$?
in
0
)
# Stock boot
ui_print
"- Backing up stock boot image"
rm
-f
/data/stock_boot
*
SHA1
=
`
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--sha1
$BOOTIMAGE
|
tail
-n
1
`
is_mounted /data
&&
STOCKDUMP
=
/data/stock_boot_
${
SHA1
}
.img
||
STOCKDUMP
=
/cache/stock_boot_
${
SHA1
}
.img
dd
if
=
$BOOTIMAGE
of
=
$STOCKDUMP
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--compress
$STOCKDUMP
cp
-af
ramdisk.cpio ramdisk.cpio.orig
;;
1
)
# Magisk patched
# Find SHA1 of stock boot image
if
[
-z
$SHA1
]
;
then
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-extract
ramdisk.cpio init.magisk.rc init.magisk.rc
SHA1
=
`
grep_prop
"# STOCKSHA1"
init.magisk.rc
`
[
!
-z
$SHA1
]
&&
STOCKDUMP
=
/data/stock_boot_
${
SHA1
}
.img
rm
-f
init.magisk.rc
fi
ui_print
"- Restoring ramdisk backup"
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-restore
ramdisk.cpio
if
[
$?
-ne
0
]
;
then
# Restore failed, try to find original
ui_print
"! Cannot restore from ramdisk backup"
ui_print
"- Finding stock boot image backup"
if
[
-f
${
STOCKDUMP
}
.gz
]
;
then
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--decompress
${
STOCKDUMP
}
.gz stock_boot.img
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--unpack
stock_boot.img
rm
-f
stock_boot.img
else
ui_print
"! Cannot find stock boot image backup"
ui_print
"! Will still try to complete installation"
fi
fi
cp
-af
ramdisk.cpio ramdisk.cpio.orig
;;
2
)
# SuperSU patched
SUPERSU
=
true
ui_print
"- SuperSU patched boot detected!"
ui_print
"- Adding auto patch script for SuperSU"
cp
-af
$INSTALLER
/common/ramdisk_patch.sh /data/custom_ramdisk_patch.sh
is_mounted /data
&&
SUIMG
=
/data/su.img
||
SUIMG
=
/cache/su.img
mount_image
$SUIMG
/su
SUPERSULOOP
=
$LOOPDEVICE
if
(
is_mounted /su
)
;
then
ui_print
"- Restoring ramdisk backup with sukernel"
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-restore
ramdisk.cpio ramdisk.cpio.orig
if
[
$?
-ne
0
]
;
then
ui_print
"! Cannot restore from ramdisk"
ui_print
"- Finding stock boot image backup with sukernel"
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--restore
ramdisk.cpio stock_boot.img
if
[
$?
-eq
0
]
;
then
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--unpack
stock_boot.img
cp
-af
ramdisk.cpio ramdisk.cpio.orig
rm
stock_boot.img
else
ui_print
"! Cannot find stock boot image backup"
ui_print
"! Will still try to complete installation"
# Since no backup at all, let's try our best...
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-restore
ramdisk.cpio
cp
-af
ramdisk.cpio ramdisk.cpio.orig
fi
fi
else
ui_print
"! SuperSU image mount failed..."
ui_print
"! Will still try to complete installation"
# Since we cannot rely on sukernel, do it outselves...
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-restore
ramdisk.cpio
cp
-af
ramdisk.cpio ramdisk.cpio.orig
fi
# Remove SuperSU backups, since we are recreating it
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-rm
ramdisk.cpio
-r
.subackup
;;
esac
##########################################################################################
# Image
# Ramdisk patch
##########################################################################################
# All ramdisk patch commands are stored in a separate script
ui_print
"- Patching ramdisk"
.
$INSTALLER
/common/ramdisk_patch.sh
$BOOTTMP
/ramdisk.cpio
cd
$BOOTTMP
# Create ramdisk backups
if
$SUPERSU
;
then
[
-f
/su/bin/sukernel
]
&&
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-backup
ramdisk.cpio.orig ramdisk.cpio ramdisk.cpio
else
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-backup
ramdisk.cpio ramdisk.cpio.orig
fi
rm
-f
ramdisk.cpio.orig
##########################################################################################
# Magisk Image
##########################################################################################
# Fix SuperSU.....
(
$BOOTMODE
)
&&
$BINDIR
/sepolicy-inject
--live
"allow fsck * * *"
$BOOTMODE
&&
$BINDIR
/sepolicy-inject
--live
"allow fsck * * *"
if
(
is_mounted /data
)
;
then
IMG
=
/data/magisk.img
...
...
@@ -388,196 +422,60 @@ cp -af $INSTALLER/common/magiskhide/. $BINDIR/magiskhide $COREDIR/magiskhide
chmod
-R
755
$COREDIR
/magiskhide
$COREDIR
/post-fs-data.d
$COREDIR
/service.d
chown
-R
0.0
$COREDIR
/magiskhide
$COREDIR
/post-fs-data.d
$COREDIR
/service.d
##########################################################################################
# Boot image patch
##########################################################################################
ui_print
"- Found Boot Image:
$BOOTIMAGE
"
rm
-rf
$TMPDIR
/boottmp 2>/dev/null
mkdir
-p
$TMPDIR
/boottmp
ui_print
"- Unpacking boot image"
unpack_boot
$BOOTIMAGE
if
[
$?
-ne
0
]
;
then
ui_print
"! Unable to unpack boot image"
exit
1
fi
ORIGBOOT
=
SUPERSU
=
false
[
-f
sbin/launch_daemonsu.sh
]
&&
SUPERSU
=
true
if
(
$SUPERSU
)
;
then
##############################
# SuperSU installation process
##############################
ui_print
"- SuperSU patched boot detected!"
ui_print
"- Adding auto patch script for SuperSU"
cp
-af
$INSTALLER
/common/custom_ramdisk_patch.sh /data/custom_ramdisk_patch.sh
if
(
is_mounted /data
)
;
then
SUIMG
=
/data/su.img
else
SUIMG
=
/cache/su.img
fi
mount_image
$SUIMG
/su
if
(!
is_mounted /su
)
;
then
ui_print
"! SU image mount failed..."
ui_print
"! Please immediately flash SuperSU now"
ui_print
"! Installation will complete after flashing SuperSU"
exit
1
fi
SUPERSULOOP
=
$LOOPDEVICE
gunzip
-c
<
$UNPACKDIR
/ramdisk.gz
>
$UNPACKDIR
/ramdisk
ui_print
"- Using sukernel to restore ramdisk"
# Restore ramdisk
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-restore
$UNPACKDIR
/ramdisk
$UNPACKDIR
/ramdisk.orig
if
[
$?
-ne
0
]
;
then
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--restore
$UNPACKDIR
/ramdisk
$TMPDIR
/boottmp/stock_boot.img
if
[
$?
-ne
0
]
;
then
ui_print
"! Unable to restore ramdisk"
exit
1
fi
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--bootimg-extract-ramdisk
$TMPDIR
/boottmp/stock_boot.img
$UNPACKDIR
/ramdisk.orig.gz
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--ungzip
$UNPACKDIR
/ramdisk.orig.gz
$UNPACKDIR
/ramdisk.orig
fi
if
[
!
-f
$UNPACKDIR
/ramdisk.orig
]
;
then
ui_print
"! Unable to restore ramdisk"
exit
1
fi
rm
-f
$TMPDIR
/boottmp/stock_boot.img
$UNPACKDIR
/ramdisk.orig.gz
$UNPACKDIR
/ramdisk.gz 2>/dev/null
ui_print
"- Patching ramdisk with sukernel"
sh /data/custom_ramdisk_patch.sh
$UNPACKDIR
/ramdisk
LD_LIBRARY_PATH
=
$SYSTEMLIB
/su/bin/sukernel
--cpio-backup
$UNPACKDIR
/ramdisk.orig
$UNPACKDIR
/ramdisk
$UNPACKDIR
/ramdisk
gzip
-9
<
$UNPACKDIR
/ramdisk
>
$UNPACKDIR
/ramdisk.gz
rm
-f
$UNPACKDIR
/ramdisk
$UNPACKDIR
/ramdisk.orig
else
##############################
# Magisk installation process
##############################
# Ramdisk restore
if
[
-d
".backup"
]
;
then
# This implies Magisk is already installed, and ramdisk backup exists
ui_print
"- Restoring ramdisk with ramdisk backup"
cp
-af
.backup/.
.
rm
-rf
magisk init.magisk.rc sbin/magic_mask.sh 2>/dev/null
ORIGBOOT
=
false
elif
[
-d
"magisk"
]
;
then
mv
-f
/data/stock_boot_
*
.gz /data/stock_boot.img.gz 2>/dev/null
gzip
-d
/data/stock_boot.img.gz 2>/dev/null
rm
-f
/data/stock_boot.img.gz 2>/dev/null
[
-f
/data/stock_boot.img
]
&&
ORIGBOOT
=
/data/stock_boot.img
# If Magisk is installed and no SuperSU and no ramdisk backups,
# we restore previous stock boot image backups
if
[
!
-z
$ORIGBOOT
]
;
then
ui_print
"- Restoring boot image with backup"
unpack_boot
$ORIGBOOT
fi
# Removing possible modifications
rm
-rf
magisk init.magisk.rc sbin/magic_mask.sh sbin/su init.xposed.rc sbin/mount_xposed.sh 2>/dev/null
ORIGBOOT
=
false
fi
# Backups
ui_print
"- Creating ramdisk backup"
mkdir
.backup 2>/dev/null
cp
-af
*
fstab
*
verity_key sepolicy .backup 2>/dev/null
if
[
-z
$ORIGBOOT
]
;
then
ui_print
"- Creating boot image backup"
if
(
is_mounted /data
)
;
then
dd
if
=
$BOOTIMAGE
of
=
/data/stock_boot.img
else
dd
if
=
$BOOTIMAGE
of
=
/cache/stock_boot.img
fi
fi
# MagiskSU
if
!
$SUPERSU
;
then
ui_print
"- Installing MagiskSU"
mkdir
-p
$COREDIR
/su 2>/dev/null
cp
-af
$BINDIR
/su
$INSTALLER
/common/magisksu.sh
$COREDIR
/su
chmod
755
$COREDIR
/su/su
$COREDIR
/su/magisksu.sh
chown
-R
0.0
$COREDIR
/su/su
$COREDIR
/su/magisksu.sh
# Patch ramdisk
ui_print
"- Patching ramdisk"
# Add magisk entrypoints
for
RC
in
init
*
.rc
;
do
if
file_contain
"import /init.environ.rc"
$RC
&&
!
file_contain
"import /init.magisk.rc"
$RC
;
then
[
!
-f
.backup/
$RC
]
&&
cp
-af
$RC
.backup
sed
-i
"/import
\/
init
\.
environ
\.
rc/iimport /init.magisk.rc"
$RC
fi
if
file_contain
"selinux.reload_policy"
$RC
;
then
[
!
-f
.backup/
$RC
]
&&
cp
-af
$RC
.backup
sed
-i
"/selinux.reload_policy/d"
$RC
fi
done
for
FSTAB
in
*
fstab
*
;
do
[
-L
$FSTAB
]
&&
continue
if
(!
$KEEPVERITY
)
;
then
sed
-i
"s/,support_scfs//g"
$FSTAB
sed
-i
's/,\{0,1\}verify\(=[^,]*\)\{0,1\}//g'
$FSTAB
fi
if
(!
$KEEPFORCEENCRYPT
)
;
then
sed
-i
"s/forceencrypt/encryptable/g"
$FSTAB
sed
-i
"s/forcefdeorfbe/encryptable/g"
$FSTAB
fi
done
if
(!
$KEEPVERITY
)
;
then
rm
verity_key 2>/dev/null
fi
# minimal sepolicy patches
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/sepolicy-inject
--load
sepolicy
--save
sepolicy
--minimal
chmod
-R
755
$COREDIR
/su
chown
-R
0.0
$COREDIR
/su
fi
# Add new items
mkdir
-p
magisk 2>/dev/null
cp
-af
$INSTALLER
/common/init.magisk.rc init.magisk.rc
cp
-af
$INSTALLER
/common/magic_mask.sh sbin/magic_mask.sh
##########################################################################################
# Repack and flash
##########################################################################################
chmod
0755 magisk
chmod
0750 init.magisk.rc sbin/magic_mask.sh
chown
0.0 magisk init.magisk.rc sbin/magic_mask.sh
fi
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--repack
$BOOTIMAGE
ui_print
"- Repacking boot image"
repack_boot
BOOTSIZE
=
`
blockdev
--getsize64
$BOOTIMAGE
2>/dev/null
`
NEWSIZE
=
`
ls
-l
$NEWBOOT
|
awk
'{print $5}'
`
if
[
"
$NEWSIZE
"
-gt
"
$BOOTSIZE
"
]
;
then
ui_print
"! Boot partition space insufficient"
ui_print
"! Remove ramdisk backups and try again"
rm
-rf
$RAMDISK
/.backup
$NEWBOOT
2>/dev/null
repack_boot
NEWSIZE
=
`
ls
-l
$NEWBOOT
|
awk
'{print $5}'
`
if
[
"
$NEWSIZE
"
-gt
"
$BOOTSIZE
"
]
;
then
ui_print
"! Boot partition size still too small..."
ui_print
"! Unable to install Magisk"
case
$?
in
1
)
ui_print
"! Unable to repack boot image!"
exit
1
fi
;;
2
)
ui_print
"! Boot partition space insufficient"
ui_print
"! Remove ramdisk backups and try again"
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--cpio-rm
ramdisk.cpio
-r
.backup
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/magiskboot
--repack
$BOOTIMAGE
if
[
$?
-eq
2
]
;
then
ui_print
"! Boot partition size still too small..."
ui_print
"! Unable to install Magisk"
exit
1
fi
;;
esac
# Sign chromeos boot
if
[
-f
chromeos
]
;
then
cp
-af
$CHROMEDIR
/.
$MAGISKBIN
/chromeos
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
chmod
644
$NEWBOOT
ui_print
"- Flashing new boot image"
[
!
-L
$BOOTIMAGE
]
&&
dd
if
=
/dev/zero
of
=
$BOOTIMAGE
bs
=
4096 2>/dev/null
dd
if
=
$NEWBOOT
of
=
$BOOTIMAGE
bs
=
4096
dd
if
=
new-boot.img
of
=
$BOOTIMAGE
bs
=
4096
cd
/
if
(!
$BOOTMODE
)
;
then
if
!
$BOOTMODE
;
then
ui_print
"- Unmounting partitions"
umount /magisk
losetup
-d
$MAGISKLOOP
rmdir
/magisk
if
(
$SUPERSU
)
;
then
if
$SUPERSU
;
then
umount /su
losetup
-d
$SUPERSULOOP
rmdir
/su
...
...
scripts/magisk_uninstaller.sh
View file @
8833d21a
#!/system/bin/sh
# Detect whether in boot mode
ps |
grep
zygote |
grep
-v
grep
>
/dev/null
&&
BOOTMODE
=
true
||
BOOTMODE
=
false
[
-z
$BOOTMODE
]
&&
BOOTMODE
=
false
TMPDIR
=
/tmp
(
$BOOTMODE
)
&&
TMPDIR
=
/dev/tmp
# This path should work in any cases
TMPDIR
=
/dev/tmp
BINDIR
=
/data/magisk
CHROMEDIR
=
$BINDIR
/chromeos
NEWBOOT
=
$TMPDIR
/boottmp/new-boot.img
UNPACKDIR
=
$TMPDIR
/boottmp/bootunpack
RAMDISK
=
$TMPDIR
/boottmp/ramdisk
BOOTTMP
=
$TMPDIR
/boottmp
MAGISKBIN
=
/data/magisk
CHROMEDIR
=
$MAGISKBIN
/chromeos
SYSTEMLIB
=
/system/lib
[
-d
/system/lib64
]
&&
SYSTEMLIB
=
/system/lib64
ui_print
()
{
echo
"
$1
"
# Default permissions
umask
022
ui_print_wrapper
()
{
type
ui_print_wrapper
>
/dev/null
&&
ui_print
"
$1
"
||
echo
"
$1
"
}
grep_prop
()
{
...
...
@@ -25,7 +25,7 @@ grep_prop() {
if
[
-z
"
$FILES
"
]
;
then
FILES
=
'/system/build.prop'
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
()
{
...
...
@@ -42,135 +42,94 @@ find_boot_image() {
fi
}
unpack_boot
()
{
rm
-rf
$UNPACKDIR
$RAMDISK
2>/dev/null
mkdir
-p
$UNPACKDIR
mkdir
-p
$RAMDISK
cd
$UNPACKDIR
LD_LIBRARY_PATH
=
$SYSTEMLIB
$BINDIR
/bootimgtools
--extract
$1
[
!
-f
$UNPACKDIR
/ramdisk.gz
]
&&
return
1
cd
$RAMDISK
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
"
\x
41
\x
a9
\x
e4
\x
67
\x
74
\x
4d
\x
1d
\x
1b
\x
a4
\x
29
\x
f2
\x
ec
\x
ea
\x
65
\x
52
\x
79"
>>
new-boot.img
fi
mv
new-boot.img
$NEWBOOT
}
# Environments
# Set permissions
chmod
-R
755
$CHROMEDIR
/futility
$
BINDIR
2>/dev/null
chmod
-R
755
$CHROMEDIR
/futility
$
MAGISKBIN
2>/dev/null
# Temporary busybox for installation
mkdir
-p
$TMPDIR
/busybox
$
BINDIR
/busybox
--install
-s
$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_boot_image
if
[
-z
"
$BOOTIMAGE
"
]
;
then
ui_print
"! Unable to detect boot image"
ui_print
_wrapper
"! Unable to detect boot image"
exit
1
fi
ui_print
"- Found Boot Image:
$BOOTIMAGE
"
ui_print
_wrapper
"- Found Boot Image:
$BOOTIMAGE
"
# Detect special vendors
SAMSUNG
=
false
SAMSUNG_CHECK
=
$(
cat
/system/build.prop |
grep
"ro.build.fingerprint="
|
grep
-i
"samsung"
)
if
[
$?
-eq
0
]
;
then
SAMSUNG
=
true
fi
LGE_G
=
false
RBRAND
=
$(
grep_prop ro.product.brand
)
RMODEL
=
$(
grep_prop ro.product.device
)
if
[
"
$RBRAND
"
=
"lge"
]
||
[
"
$RBRAND
"
=
"LGE"
]
;
then
if
[
"
$RMODEL
"
=
"d800"
]
||
[
"
$RMODEL
"
=
"d801"
]
||
[
"
$RMODEL
"
=
"d802"
]
||
[
"
$RMODEL
"
=
"d803"
]
||
[
"
$RMODEL
"
=
"ls980"
]
||
[
"
$RMODEL
"
=
"vs980"
]
||
[
"
$RMODEL
"
=
"l01f"
]
||
[
"
$RMODEL
"
=
"d850"
]
||
[
"
$RMODEL
"
=
"d852"
]
||
[
"
$RMODEL
"
=
"d855"
]
||
[
"
$RMODEL
"
=
"ls990"
]
||
[
"
$RMODEL
"
=
"vs985"
]
||
[
"
$RMODEL
"
=
"f400"
]
;
then
LGE_G
=
true
ui_print
"! Bump device detected"
fi
fi
rm
-rf
$BOOTTMP
2>/dev/null
mkdir
-p
$BOOTTMP
cd
$BOOTTMP
# First unpack the boot image
unpack_boot
$BOOTIMAGE
ui_print_wrapper
"- Unpacking boot image"
LD_LIBRARY_PATH
=
$SYSTEMLIB
$MAGISKBIN
/magiskboot
--unpack
$BOOTIMAGE
if
[
$?
-ne
0
]
;
then
ui_print
"! Unable to unpack boot image"
ui_print
_wrapper
"! Unable to unpack boot image"
exit
1
fi
#
Detect boot image state
SUPERSU
=
false
[
-f
sbin/launch_daemonsu.sh
]
&&
SUPERSU
=
true
if
[
!
-f
init.magisk.rc
]
;
then
ui_print
"! Magisk is not installed!"
exit
1
#
Update our previous backup to new format if exists
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
if
(
$SUPERSU
)
;
then
ui_print
"- SuperSU patched image detected"
rm
-rf
magisk init.magisk.rc sbin/magic_mask.sh
repack_boot
else
if
[
-f
/data/stock_boot.img
]
;
then
ui_print
"- Boot image backup found!"
NEWBOOT
=
/data/stock_boot.img
else
ui_print
"! Boot image backup unavailable"
if
[
-d
".backup"
]
;
then
ui_print
"- Restoring ramdisk with backup"
cp
-af
.backup/.
.
# Detect boot image state
LD_LIBRARY_PATH
=
$SYSTEMLIB
$MAGISKBIN
/magiskboot
--cpio-test
ramdisk.cpio
case
$?
in
0
)
ui_print_wrapper
"! Magisk is not installed!"
ui_print_wrapper
"! Nothing to uninstall"
exit
;;
1
)
# Find SHA1 of stock boot image
if
[
-z
$SHA1
]
;
then
LD_LIBRARY_PATH
=
$SYSTEMLIB
$MAGISKBIN
/magiskboot
--cpio-extract
ramdisk.cpio init.magisk.rc init.magisk.rc
SHA1
=
`
grep_prop
"# STOCKSHA1"
init.magisk.rc
`
[
!
-z
$SHA1
]
&&
STOCKDUMP
=
/data/stock_boot_
${
SHA1
}
.img
rm
-f
init.magisk.rc
fi
rm
-rf
magisk init.magisk.rc sbin/magic_mask.sh .backup
repack_boot
fi
if
[
-f
${
STOCKDUMP
}
.gz
]
;
then
ui_print_wrapper
"- Boot image backup found!"
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
cp
-af
$CHROMEDIR
/.
$MAGISKBIN
/chromeos
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
chmod
644
$NEWBOOT
ui_print
"- Flashing stock/reverted image"
ui_print_wrapper
"- Flashing stock/reverted image"
[
!
-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
\
/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/busybox /data/magisk /data/custom_ramdisk_patch.sh 2>/dev/null
(
$BOOTMODE
)
&&
reboot
$BOOTMODE
&&
reboot
scripts/ramdisk_patch.sh
0 → 100644
View file @
8833d21a
# This file will be sourced by Magisk patch zip, so all variables in the main script should be present
# However, this file may also be called by SuperSU, so we still have to find our own variables in this case
RAMDISK
=
$1
if
[
-z
$MAGISK
]
;
then
TMPDIR
=
/dev/tmp
MAGISKBIN
=
/data/magisk
[
!
-e
$MAGISKBIN
]
&&
MAGISKBIN
=
/cache/data_bin
[
!
-e
$MAGISKBIN
]
&&
exit
1
SYSTEMLIB
=
/system/lib
[
-d
/system/lib64
]
&&
SYSTEMLIB
=
/system/lib64
KEEPVERITY
=
true
KEEPFORCEENCRYPT
=
true
fi
cd
$TMPDIR
# --cpio-add <incpio> <mode> <entry> <infile>
cpio_add
()
{
LD_LIBRARY_PATH
=
$SYSTEMLIB
$MAGISKBIN
/magiskboot
--cpio-add
$RAMDISK
$1
$2
$3
}
# --cpio-extract <incpio> <entry> <outfile>
cpio_extract
()
{
LD_LIBRARY_PATH
=
$SYSTEMLIB
$MAGISKBIN
/magiskboot
--cpio-extract
$RAMDISK
$1
$2
}
# --cpio-mkdir <incpio> <mode> <entry>
cpio_mkdir
()
{
LD_LIBRARY_PATH
=
$SYSTEMLIB
$MAGISKBIN
/magiskboot
--cpio-mkdir
$RAMDISK
$1
$2
}
# The common patches
$KEEPVERITY
||
LD_LIBRARY_PATH
=
$SYSTEMLIB
$MAGISKBIN
/magiskboot
--cpio-patch-dmverity
$RAMDISK
$KEEPFORCEENCRYPT
||
LD_LIBRARY_PATH
=
$SYSTEMLIB
$MAGISKBIN
/magiskboot
--cpio-patch-forceencrypt
$RAMDISK
# Add magisk entrypoint
cpio_extract init.rc init.rc
grep
"import /init.magisk.rc"
init.rc
>
/dev/null
||
sed
-i
'1,/.*import.*/s/.*import.*/import \/init.magisk.rc\n&/'
init.rc
sed
-i
"/selinux.reload_policy/d"
init.rc
cpio_add 750 init.rc init.rc
# sepolicy patches
cpio_extract sepolicy sepolicy
LD_LIBRARY_PATH
=
$SYSTEMLIB
$MAGISKBIN
/sepolicy-inject
--load
sepolicy
--save
sepolicy
--minimal
cpio_add 644 sepolicy sepolicy
# Add new items
cpio_mkdir 755 magisk
cp
-af
$MAGISKBIN
/init.magisk.rc init.magisk.rc
[
!
-z
$SHA1
]
&&
echo
"# STOCKSHA1=
$SHA1
"
>>
init.magisk.rc
cpio_add 750 init.magisk.rc init.magisk.rc
cpio_add 750 sbin/magic_mask.sh
$MAGISKBIN
/magic_mask.sh
uninstaller/META-INF/com/google/android/update-binary
View file @
8833d21a
...
...
@@ -49,20 +49,6 @@ ui_print() {
echo
-n
-e
"ui_print
\n
"
>>
/proc/self/fd/
$OUTFD
}
getvar
()
{
local
VARNAME
=
$1
local
VALUE
=
$(
eval echo
\$
"
$VARNAME
"
)
;
for
FILE
in
/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
}
is_mounted
()
{
if
[
!
-z
"
$2
"
]
;
then
cat
/proc/mounts |
grep
$1
|
grep
$2
,
>
/dev/null
...
...
@@ -105,10 +91,10 @@ if [ ! -f '/system/build.prop' ]; then
exit
1
fi
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
)
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
...
...
@@ -129,15 +115,8 @@ cp -af $BINDIR/* $CHROMEDIR /data/magisk
# Detection all done, start installing
##########################################################################################
ui_print
"- Found Boot Image:
$BOOTIMAGE
"
if
(
is_mounted /data
)
;
then
ui_print
"- Running uninstaller scripts"
sh
$INSTALLER
/common/magisk_uninstaller.sh
if
[
$?
-ne
0
]
;
then
ui_print
"! Magisk is not installed or an error occurred"
exit
1
fi
.
$INSTALLER
/common/magisk_uninstaller.sh
else
ui_print
"! Data unavailable"
ui_print
"! Placing uninstall script to /cache"
...
...
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