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
ab47b717
Commit
ab47b717
authored
Feb 11, 2019
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reorganize scripts
parent
65ebb0d2
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
154 additions
and
150 deletions
+154
-150
nonroot_utils.sh
app-core/src/main/res/raw/nonroot_utils.sh
+0
-4
utils.sh
app-core/src/main/res/raw/utils.sh
+13
-0
bootstages.cpp
native/jni/core/bootstages.cpp
+1
-1
flash_script.sh
scripts/flash_script.sh
+0
-8
util_functions.sh
scripts/util_functions.sh
+140
-137
No files found.
app-core/src/main/res/raw/nonroot_utils.sh
View file @
ab47b717
...
...
@@ -7,7 +7,3 @@ get_flags() {
$SYSTEM_ROOT
&&
KEEPVERITY
=
true
||
KEEPVERITY
=
false
[
"
`
getprop ro.crypto.state
`
"
=
"encrypted"
]
&&
KEEPFORCEENCRYPT
=
true
||
KEEPFORCEENCRYPT
=
false
}
run_migrations
()
{
# NOP
}
app-core/src/main/res/raw/utils.sh
View file @
ab47b717
...
...
@@ -17,6 +17,19 @@ fix_env() {
cd
/
}
run_migrations
()
{
# Move the stock backups
if
[
-f
/data/magisk/stock_boot
*
]
;
then
mv
/data/magisk/stock_boot
*
/data 2>/dev/null
fi
if
[
-f
/data/adb/magisk/stock_boot
*
]
;
then
mv
/data/adb/magisk/stock_boot
*
/data 2>/dev/null
fi
# Remove old dbs
rm
-f
/data/user
*
/
*
/magisk.db
[
-L
/data/magisk.img
]
||
mv
/data/magisk.img /data/adb/magisk.img 2>/dev/null
}
direct_install
()
{
rm
-rf
/data/adb/magisk/
*
2>/dev/null
mkdir
-p
/data/adb/magisk 2>/dev/null
...
...
native/jni/core/bootstages.cpp
View file @
ab47b717
...
...
@@ -398,7 +398,7 @@ static bool magisk_env() {
LOGI
(
"* Initializing Magisk environment
\n
"
);
// Alternative binaries paths
const
char
*
alt_bin
[]
=
{
"/cache/data_
bin
"
,
"/data/magisk"
,
const
char
*
alt_bin
[]
=
{
"/cache/data_
adb/magisk
"
,
"/data/magisk"
,
"/data/data/com.topjohnwu.magisk/install"
,
"/data/user_de/0/com.topjohnwu.magisk/install"
};
for
(
auto
&
alt
:
alt_bin
)
{
...
...
scripts/flash_script.sh
View file @
ab47b717
...
...
@@ -73,14 +73,6 @@ remove_system_su
ui_print
"- Constructing environment"
if
$DATA
;
then
MAGISKBIN
=
/data/magisk
$DATA_DE
&&
MAGISKBIN
=
/data/adb/magisk
run_migrations
else
MAGISKBIN
=
/cache/data_bin
fi
# Copy required files
rm
-rf
$MAGISKBIN
/
*
2>/dev/null
mkdir
-p
$MAGISKBIN
2>/dev/null
...
...
scripts/util_functions.sh
View file @
ab47b717
...
...
@@ -7,23 +7,57 @@
#
##########################################################################################
#MAGISK_VERSION_STUB
###################
# Helper Functions
###################
# Detect whether in boot mode
[
-z
$BOOTMODE
]
&&
BOOTMODE
=
false
$BOOTMODE
||
ps |
grep
zygote |
grep
-qv
grep
&&
BOOTMODE
=
true
$BOOTMODE
||
ps
-A
|
grep
zygote |
grep
-qv
grep
&&
BOOTMODE
=
true
ui_print
()
{
$BOOTMODE
&&
echo
"
$1
"
||
echo
-e
"ui_print
$1
\n
ui_print"
>>
/proc/self/fd/
$OUTFD
}
# Presets
MAGISKTMP
=
/sbin/.magisk
[
-z
$NVBASE
]
&&
NVBASE
=
/data/adb
[
-z
$MAGISKBIN
]
&&
MAGISKBIN
=
$NVBASE
/magisk
[
-z
$IMG
]
&&
IMG
=
$NVBASE
/magisk.img
toupper
()
{
echo
"
$@
"
|
tr
'[:lower:]'
'[:upper:]'
}
# Bootsigner related stuff
BOOTSIGNERCLASS
=
a.a
BOOTSIGNER
=
"/system/bin/dalvikvm -Xnodex2oat -Xnoimage-dex2oat -cp
\$
APK
\$
BOOTSIGNERCLASS"
BOOTSIGNED
=
false
grep_cmdline
()
{
local
REGEX
=
"s/^
$1
=//p"
cat
/proc/cmdline |
tr
'[:space:]'
'\n'
|
sed
-n
"
$REGEX
"
2>/dev/null
}
grep_prop
()
{
local
REGEX
=
"s/^
$1
=//p"
shift
local
FILES
=
$@
[
-z
"
$FILES
"
]
&&
FILES
=
'/system/build.prop'
sed
-n
"
$REGEX
"
$FILES
2>/dev/null |
head
-n
1
}
getvar
()
{
local
VARNAME
=
$1
local
VALUE
=
VALUE
=
`
grep_prop
$VARNAME
/sbin/.magisk/config /data/.magisk /cache/.magisk
`
[
!
-z
$VALUE
]
&&
eval
$VARNAME
=
\$
VALUE
}
is_mounted
()
{
grep
-q
"
`
readlink
-f
$1
`
"
/proc/mounts 2>/dev/null
return
$?
}
abort
()
{
ui_print
"
$1
"
$BOOTMODE
||
recovery_cleanup
exit
1
}
resolve_vars
()
{
MAGISKBIN
=
$NVBASE
/magisk
IMG
=
$NVBASE
/magisk.img
}
######################
# Environment Related
######################
setup_flashable
()
{
$BOOTMODE
&&
return
...
...
@@ -43,19 +77,59 @@ setup_flashable() {
fi
}
# Backward compatibility
get_outfd
()
{
setup_flashable
setup_bb
()
{
if
[
-x
$MAGISKTMP
/busybox/busybox
]
;
then
# Make sure this path is in the front
echo
$PATH
|
grep
-q
"^
$MAGISKTMP
/busybox"
||
export
PATH
=
$MAGISKTMP
/busybox:
$PATH
elif
[
-x
$TMPDIR
/bin/busybox
]
;
then
# Make sure this path is in the front
echo
$PATH
|
grep
-q
"^
$TMPDIR
/bin"
||
export
PATH
=
$TMPDIR
/bin:
$PATH
else
# Construct the PATH
mkdir
-p
$TMPDIR
/bin
ln
-s
$MAGISKBIN
/busybox
$TMPDIR
/bin/busybox
$MAGISKBIN
/busybox
--install
-s
$TMPDIR
/bin
export
PATH
=
$TMPDIR
/bin:
$PATH
fi
}
ui_print
()
{
$BOOTMODE
&&
echo
"
$1
"
||
echo
-e
"ui_print
$1
\n
ui_print"
>>
/proc/self/fd/
$OUTFD
boot_actions
()
{
if
[
!
-d
$MAGISKTMP
/mirror/bin
]
;
then
mkdir
-p
$MAGISKTMP
/mirror/bin
mount
-o
bind
$MAGISKBIN
$MAGISKTMP
/mirror/bin
fi
MAGISKBIN
=
$MAGISKTMP
/mirror/bin
setup_bb
}
toupper
()
{
echo
"
$@
"
|
tr
'[:lower:]'
'[:upper:]'
recovery_actions
()
{
# TWRP bug fix
mount
-o
bind
/dev/urandom /dev/random
# Temporarily block out all custom recovery binaries/libs
mv
/sbin /sbin_tmp
# Unset library paths
OLD_LD_LIB
=
$LD_LIBRARY_PATH
OLD_LD_PRE
=
$LD_PRELOAD
unset
LD_LIBRARY_PATH
unset
LD_PRELOAD
}
recovery_cleanup
()
{
mv
/sbin_tmp /sbin 2>/dev/null
[
-z
$OLD_PATH
]
||
export
PATH
=
$OLD_PATH
[
-z
$OLD_LD_LIB
]
||
export
LD_LIBRARY_PATH
=
$OLD_LD_LIB
[
-z
$OLD_LD_PRE
]
||
export
LD_PRELOAD
=
$OLD_LD_PRE
ui_print
"- Unmounting partitions"
umount
-l
/system_root 2>/dev/null
umount
-l
/system 2>/dev/null
umount
-l
/vendor 2>/dev/null
umount
-l
/dev/random 2>/dev/null
}
#######################
# Installation Related
#######################
find_block
()
{
for
BLOCK
in
"
$@
"
;
do
DEVICE
=
`
find /dev/block
-type
l
-iname
$BLOCK
|
head
-n
1
`
2>/dev/null
...
...
@@ -139,51 +213,6 @@ get_flags() {
[
-z
$RECOVERYMODE
]
&&
RECOVERYMODE
=
false
}
grep_cmdline
()
{
local
REGEX
=
"s/^
$1
=//p"
cat
/proc/cmdline |
tr
'[:space:]'
'\n'
|
sed
-n
"
$REGEX
"
2>/dev/null
}
grep_prop
()
{
local
REGEX
=
"s/^
$1
=//p"
shift
local
FILES
=
$@
[
-z
"
$FILES
"
]
&&
FILES
=
'/system/build.prop'
sed
-n
"
$REGEX
"
$FILES
2>/dev/null |
head
-n
1
}
getvar
()
{
local
VARNAME
=
$1
local
VALUE
=
VALUE
=
`
grep_prop
$VARNAME
/sbin/.magisk/config /data/.magisk /cache/.magisk
`
[
!
-z
$VALUE
]
&&
eval
$VARNAME
=
\$
VALUE
}
run_migrations
()
{
# Update the broken boot backup
if
[
-f
/data/stock_boot_.img.gz
]
;
then
$MAGISKBIN
/magiskboot
--decompress
/data/stock_boot_.img.gz /data/stock_boot.img
fi
# Update our previous backup to new format if exists
if
[
-f
/data/stock_boot.img
]
;
then
ui_print
"- Migrating boot image backup"
SHA1
=
`
$MAGISKBIN
/magiskboot
--sha1
/data/stock_boot.img 2>/dev/null
`
STOCKDUMP
=
/data/stock_boot_
${
SHA1
}
.img
mv
/data/stock_boot.img
$STOCKDUMP
$MAGISKBIN
/magiskboot
--compress
$STOCKDUMP
fi
# Move the stock backups
if
[
-f
/data/magisk/stock_boot
*
]
;
then
mv
/data/magisk/stock_boot
*
/data 2>/dev/null
fi
if
[
-f
/data/adb/magisk/stock_boot
*
]
;
then
mv
/data/adb/magisk/stock_boot
*
/data 2>/dev/null
fi
# Remove old dbs
rm
-f
/data/user
*
/
*
/magisk.db
[
-L
/data/magisk.img
]
||
mv
/data/magisk.img /data/adb/magisk.img 2>/dev/null
}
find_boot_image
()
{
BOOTIMAGE
=
if
[
!
-z
$SLOT
]
;
then
...
...
@@ -201,23 +230,23 @@ flash_image() {
# Make sure all blocks are writable
$MAGISKBIN
/magisk
--unlock-blocks
2>/dev/null
case
"
$1
"
in
*
.gz
)
C
OM
1
=
"
$MAGISKBIN
/magiskboot --decompress '
$1
' - 2>/dev/null"
;;
*
)
C
OM
1
=
"cat '
$1
'"
;;
*
.gz
)
C
MD
1
=
"
$MAGISKBIN
/magiskboot --decompress '
$1
' - 2>/dev/null"
;;
*
)
C
MD
1
=
"cat '
$1
'"
;;
esac
if
$BOOTSIGNED
;
then
C
OM
2
=
"
$BOOTSIGNER
-sign"
C
MD
2
=
"
$BOOTSIGNER
-sign"
ui_print
"- Sign image with test keys"
else
C
OM
2
=
"cat -"
C
MD
2
=
"cat -"
fi
if
[
-b
"
$2
"
]
;
then
local
s_size
=
`
stat
-c
'%s'
"
$1
"
`
local
t_size
=
`
blockdev
--getsize64
"
$2
"
`
[
$s_size
-gt
$t_size
]
&&
return
1
eval
$C
OM1
|
eval
$COM
2
|
cat
- /dev/zero
>
"
$2
"
2>/dev/null
eval
$C
MD1
|
eval
$CMD
2
|
cat
- /dev/zero
>
"
$2
"
2>/dev/null
else
ui_print
"- Not block device, storing image"
eval
$C
OM1
|
eval
$COM
2
>
"
$2
"
2>/dev/null
eval
$C
MD1
|
eval
$CMD
2
>
"
$2
"
2>/dev/null
fi
return
0
}
...
...
@@ -251,11 +280,6 @@ sign_chromeos() {
mv
new-boot.img.signed new-boot.img
}
is_mounted
()
{
grep
-q
"
`
readlink
-f
$1
`
"
/proc/mounts 2>/dev/null
return
$?
}
remove_system_su
()
{
if
[
-f
/system/bin/su
-o
-f
/system/xbin/su
]
&&
[
!
-f
/su/bin/su
]
;
then
ui_print
"- Removing system installed root"
...
...
@@ -305,62 +329,24 @@ check_data() {
# Test if DE storage is writable
$DATA
&&
[
-d
/data/adb
]
&&
touch
/data/adb/.rw
&&
rm
/data/adb/.rw
&&
DATA_DE
=
true
fi
$DATA
&&
NVBASE
=
/data
||
NVBASE
=
/cache/data_adb
$DATA_DE
&&
NVBASE
=
/data/adb
resolve_vars
}
setup_bb
()
{
if
[
-x
$MAGISKTMP
/busybox/busybox
]
;
then
# Make sure this path is in the front
echo
$PATH
|
grep
-q
"^
$MAGISKTMP
/busybox"
||
export
PATH
=
$MAGISKTMP
/busybox:
$PATH
elif
[
-x
$TMPDIR
/bin/busybox
]
;
then
# Make sure this path is in the front
echo
$PATH
|
grep
-q
"^
$TMPDIR
/bin"
||
export
PATH
=
$TMPDIR
/bin:
$PATH
else
# Construct the PATH
mkdir
-p
$TMPDIR
/bin
ln
-s
$MAGISKBIN
/busybox
$TMPDIR
/bin/busybox
$MAGISKBIN
/busybox
--install
-s
$TMPDIR
/bin
export
PATH
=
$TMPDIR
/bin:
$PATH
fi
}
boot_actions
()
{
if
[
!
-d
$MAGISKTMP
/mirror/bin
]
;
then
mkdir
-p
$MAGISKTMP
/mirror/bin
mount
-o
bind
$MAGISKBIN
$MAGISKTMP
/mirror/bin
find_manager_apk
()
{
APK
=
/data/adb/magisk.apk
[
-f
$APK
]
||
APK
=
/data/magisk/magisk.apk
[
-f
$APK
]
||
APK
=
/data/app/com.topjohnwu.magisk
*
/
*
.apk
if
[
!
-f
$APK
]
;
then
DBAPK
=
`
magisk
--sqlite
"SELECT value FROM strings WHERE key='requester'"
|
cut
-d
=
-f2
`
[
-z
"
$DBAPK
"
]
||
APK
=
/data/app/
$DBAPK
*
/
*
.apk
fi
MAGISKBIN
=
$MAGISKTMP
/mirror/bin
setup_bb
}
recovery_actions
()
{
# TWRP bug fix
mount
-o
bind
/dev/urandom /dev/random
# Temporarily block out all custom recovery binaries/libs
mv
/sbin /sbin_tmp
# Unset library paths
OLD_LD_LIB
=
$LD_LIBRARY_PATH
OLD_LD_PRE
=
$LD_PRELOAD
unset
LD_LIBRARY_PATH
unset
LD_PRELOAD
}
recovery_cleanup
()
{
mv
/sbin_tmp /sbin 2>/dev/null
[
-z
$OLD_PATH
]
||
export
PATH
=
$OLD_PATH
[
-z
$OLD_LD_LIB
]
||
export
LD_LIBRARY_PATH
=
$OLD_LD_LIB
[
-z
$OLD_LD_PRE
]
||
export
LD_PRELOAD
=
$OLD_LD_PRE
ui_print
"- Unmounting partitions"
umount
-l
/system_root 2>/dev/null
umount
-l
/system 2>/dev/null
umount
-l
/vendor 2>/dev/null
umount
-l
/dev/random 2>/dev/null
}
abort
()
{
ui_print
"
$1
"
$BOOTMODE
||
recovery_cleanup
exit
1
}
#################
# Module Related
#################
set_perm
()
{
chown
$2
:
$3
$1
||
return
1
...
...
@@ -437,12 +423,29 @@ unmount_magisk_img() {
fi
}
find_manager_apk
()
{
APK
=
/data/adb/magisk.apk
[
-f
$APK
]
||
APK
=
/data/magisk/magisk.apk
[
-f
$APK
]
||
APK
=
/data/app/com.topjohnwu.magisk
*
/
*
.apk
if
[
!
-f
$APK
]
;
then
DBAPK
=
`
magisk
--sqlite
"SELECT value FROM strings WHERE key='requester'"
|
cut
-d
=
-f2
`
[
-z
"
$DBAPK
"
]
||
APK
=
/data/app/
$DBAPK
*
/
*
.apk
fi
}
##################################
# Backwards Compatibile Functions
##################################
get_outfd
()
{
setup_flashable
;
}
#######
# main
#######
#MAGISK_VERSION_STUB
# Detect whether in boot mode
[
-z
$BOOTMODE
]
&&
BOOTMODE
=
false
$BOOTMODE
||
ps |
grep
zygote |
grep
-qv
grep
&&
BOOTMODE
=
true
$BOOTMODE
||
ps
-A
|
grep
zygote |
grep
-qv
grep
&&
BOOTMODE
=
true
# Presets
MAGISKTMP
=
/sbin/.magisk
NVBASE
=
/data/adb
# Bootsigner related stuff
BOOTSIGNERCLASS
=
a.a
BOOTSIGNER
=
"/system/bin/dalvikvm -Xnodex2oat -Xnoimage-dex2oat -cp
\$
APK
\$
BOOTSIGNERCLASS"
BOOTSIGNED
=
false
resolve_vars
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