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
b7986a35
Commit
b7986a35
authored
Jul 24, 2017
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Overcome some quirks in Android Lollipop
parent
ce87591c
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
56 additions
and
27 deletions
+56
-27
cpio.c
jni/magiskboot/cpio.c
+23
-0
magiskboot.h
jni/magiskboot/magiskboot.h
+2
-1
main.c
jni/magiskboot/main.c
+10
-9
boot_patch.sh
scripts/boot_patch.sh
+2
-7
flash_script.sh
scripts/flash_script.sh
+1
-0
magisk_uninstaller.sh
scripts/magisk_uninstaller.sh
+1
-5
util_functions.sh
scripts/util_functions.sh
+17
-5
No files found.
jni/magiskboot/cpio.c
View file @
b7986a35
...
...
@@ -470,6 +470,24 @@ static int cpio_restore(struct vector *v) {
return
ret
;
}
static
void
cpio_stocksha1
(
struct
vector
*
v
)
{
cpio_file
*
f
;
char
sha1
[
41
];
vec_for_each
(
v
,
f
)
{
if
(
strcmp
(
f
->
filename
,
"init.magisk.rc"
)
==
0
)
{
for
(
char
*
pos
=
f
->
data
;
pos
<
f
->
data
+
f
->
filesize
;
pos
=
strchr
(
pos
+
1
,
'\n'
)
+
1
)
{
if
(
memcmp
(
pos
,
"# STOCKSHA1="
,
12
)
==
0
)
{
pos
+=
12
;
memcpy
(
sha1
,
pos
,
40
);
sha1
[
40
]
=
'\0'
;
printf
(
"%s
\n
"
,
sha1
);
return
;
}
}
}
}
}
int
cpio_commands
(
const
char
*
command
,
int
argc
,
char
*
argv
[])
{
int
recursive
=
0
,
ret
=
0
;
command_t
cmd
;
...
...
@@ -480,6 +498,8 @@ int cpio_commands(const char *command, int argc, char *argv[]) {
cmd
=
TEST
;
}
else
if
(
strcmp
(
command
,
"restore"
)
==
0
)
{
cmd
=
RESTORE
;
}
else
if
(
strcmp
(
command
,
"stocksha1"
)
==
0
)
{
cmd
=
STOCKSHA1
;
}
else
if
(
argc
==
1
&&
strcmp
(
command
,
"backup"
)
==
0
)
{
cmd
=
BACKUP
;
}
else
if
(
argc
>
0
&&
strcmp
(
command
,
"rm"
)
==
0
)
{
...
...
@@ -510,6 +530,9 @@ int cpio_commands(const char *command, int argc, char *argv[]) {
case
RESTORE
:
ret
=
cpio_restore
(
&
v
);
break
;
case
STOCKSHA1
:
cpio_stocksha1
(
&
v
);
return
0
;
case
BACKUP
:
cpio_backup
(
argv
[
0
],
&
v
);
case
RM
:
...
...
jni/magiskboot/magiskboot.h
View file @
b7986a35
...
...
@@ -55,7 +55,8 @@ typedef enum {
TEST
,
PATCH
,
BACKUP
,
RESTORE
RESTORE
,
STOCKSHA1
}
command_t
;
extern
char
*
SUP_LIST
[];
...
...
jni/magiskboot/main.c
View file @
b7986a35
...
...
@@ -20,15 +20,16 @@ static void usage(char *arg0) {
" Search <hexpattern1> in <file>, and replace with <hexpattern2>
\n
"
"
\n
"
"%s --cpio-<cmd> <incpio> [flags...] [params...]
\n
"
" Do cpio related cmds to <incpio> (modifications are done directly)
\n
Supported commands:
\n
"
" --cpio-rm <incpio> [-r] <entry>
\n
Remove entry from cpio, flag -r to remove recursively
\n
"
" --cpio-mkdir <incpio> <mode> <entry>
\n
Create directory as an <entry>
\n
"
" --cpio-add <incpio> <mode> <entry> <infile>
\n
Add <infile> as an <entry>; replaces <entry> if already exists
\n
"
" --cpio-extract <incpio> <entry> <outfile>
\n
Extract <entry> to <outfile>
\n
"
" --cpio-test <incpio>
\n
Return value: 0/not patched 1/Magisk 2/Other (e.g. phh, SuperSU)
\n
"
" --cpio-patch <KEEPVERITY> <KEEPFORCEENCRYPT>
\n
Patch cpio for Magisk. KEEP**** are true/false values
\n
"
" --cpio-backup <incpio> <origcpio>
\n
Create ramdisk backups into <incpio> from <origcpio>
\n
"
" --cpio-restore <incpio>
\n
Restore ramdisk from ramdisk backup within <incpio>
\n
"
" Do cpio related cmds to <incpio> (modifications are done directly)
\n
Supported commands and params:
\n
"
" -rm [-r] <entry>
\n
Remove entry from <incpio>, flag -r to remove recursively
\n
"
" -mkdir <mode> <entry>
\n
Create directory as an <entry>
\n
"
" -add <mode> <entry> <infile>
\n
Add <infile> as an <entry>; replaces <entry> if already exists
\n
"
" -extract <entry> <outfile>
\n
Extract <entry> to <outfile>
\n
"
" -test
\n
Return value: 0/not patched 1/Magisk 2/Other (e.g. phh, SuperSU)
\n
"
" -patch <KEEPVERITY> <KEEPFORCEENCRYPT>
\n
Patch cpio for Magisk. KEEP**** are true/false values
\n
"
" -backup <origcpio>
\n
Create ramdisk backups into <incpio> from <origcpio>
\n
"
" -restore
\n
Restore ramdisk from ramdisk backup within <incpio>
\n
"
" -stocksha1
\n
Get stock boot SHA1 recorded within <incpio>
\n
"
"
\n
"
"%s --compress[=method] <infile> [outfile]
\n
"
" Compress <infile> with [method] (default: gzip), optionally to [outfile]
\n
Supported methods: "
...
...
scripts/boot_patch.sh
View file @
b7986a35
...
...
@@ -106,7 +106,7 @@ fi
[
-z
$KEEPFORCEENCRYPT
]
&&
KEEPFORCEENCRYPT
=
false
# Detect whether running as root
[
`
id
-u
`
-eq
0
]
&&
ROOT
=
true
||
ROOT
=
false
id
|
grep
"uid=0"
>
/dev/null 2>&1
&&
ROOT
=
true
||
ROOT
=
false
# Switch to the location of the script file
[
-z
$SOURCEDMODE
]
&&
cd
"
`
dirname_wrap
"
${
BASH_SOURCE
:-
$0
}
"
`
"
...
...
@@ -156,12 +156,7 @@ case $? in
1
)
# Magisk patched
ui_print_wrap
"- Magisk patched image detected!"
# Find SHA1 of stock boot image
if
[
-z
$SHA1
]
;
then
./magiskboot
--cpio-extract
ramdisk.cpio init.magisk.rc init.magisk.rc.old
SHA1
=
`
grep_prop
"# STOCKSHA1"
init.magisk.rc.old
`
rm
-f
init.magisk.rc.old
fi
[
-z
$SHA1
]
&&
SHA1
=
`
./magiskboot
--cpio-stocksha1
ramdisk.cpio
`
OK
=
false
./magiskboot
--cpio-restore
ramdisk.cpio
if
[
$?
-eq
0
]
;
then
...
...
scripts/flash_script.sh
View file @
b7986a35
...
...
@@ -183,6 +183,7 @@ if ! $BOOTMODE; then
$MAGISKBIN
/magisk
--umountimg
/magisk
$MAGISKLOOP
rmdir
/magisk
recovery_cleanup
rm
-rf
$TMPDIR
fi
ui_print
"- Done"
...
...
scripts/magisk_uninstaller.sh
View file @
b7986a35
...
...
@@ -101,11 +101,7 @@ case $? in
1
)
# Magisk patched
ui_print_wrap
"- Magisk patched image detected!"
# Find SHA1 of stock boot image
if
[
-z
$SHA1
]
;
then
./magiskboot
--cpio-extract
ramdisk.cpio init.magisk.rc init.magisk.rc.old
SHA1
=
`
grep_prop
"# STOCKSHA1"
init.magisk.rc.old
`
rm
-f
init.magisk.rc.old
fi
[
-z
$SHA1
]
&&
SHA1
=
`
./magiskboot
--cpio-stocksha1
ramdisk.cpio
`
[
!
-z
$SHA1
]
&&
STOCKDUMP
=
/data/stock_boot_
${
SHA1
}
.img
if
[
-f
${
STOCKDUMP
}
.gz
]
;
then
ui_print_wrap
"- Boot image backup found!"
...
...
scripts/util_functions.sh
View file @
b7986a35
##########################################################################################
#
#
# Magisk General Utility Functions
# by topjohnwu
#
#
# Used in flash_script.sh, addon.d.sh, magisk module installers, and uninstaller
#
#
##########################################################################################
MAGISK_VERSION_STUB
...
...
@@ -30,7 +30,7 @@ get_outfd() {
ui_print
()
{
if
$BOOTMODE
;
then
echo
"
$1
"
else
else
echo
-n
-e
"ui_print
$1
\n
"
>>
/proc/self/fd/
$OUTFD
echo
-n
-e
"ui_print
\n
"
>>
/proc/self/fd/
$OUTFD
fi
...
...
@@ -128,10 +128,21 @@ api_level_arch_detect() {
recovery_actions
()
{
# TWRP bug fix
mount
-o
bind
/dev/urandom /dev/random
# Preserve environment varibles
OLD_PATH
=
$PATH
OLD_LD_PATH
=
$LD_LIBRARY_PATH
# Extract busybox from Magisk Manager
if
[
-f
$INSTALLER
/common/magisk.apk
]
;
then
mkdir
-p
$TMPDIR
/bin
[
$ARCH
=
"arm"
-o
$ARCH
=
"arm64"
]
&&
BBPATH
=
lib/armeabi-v7a
||
BBPATH
=
lib/x86
unzip
-p
$INSTALLER
/common/magisk.apk
$BBPATH
/libbusybox.so
>
$TMPDIR
/bin/busybox 2>/dev/null
chmod
755
$TMPDIR
/bin/busybox
$TMPDIR
/bin/busybox
--install
-s
$TMPDIR
/bin
export
PATH
=
$PATH
:
$TMPDIR
/bin
fi
# Temporarily block out all custom recovery binaries/libs
mv
/sbin /sbin_tmp
# Add all possible library paths
OLD_LD_PATH
=
$LD_LIBRARY_PATH
$IS64BIT
&&
export
LD_LIBRARY_PATH
=
/system/lib64:/system/vendor/lib64
||
export
LD_LIBRARY_PATH
=
/system/lib:/system/vendor/lib
}
...
...
@@ -139,6 +150,7 @@ recovery_cleanup() {
mv
/sbin_tmp /sbin
# Clear LD_LIBRARY_PATH
export
LD_LIBRARY_PATH
=
$OLD_LD_PATH
export
PATH
=
$OLD_PATH
ui_print
"- Unmounting partitions"
umount
-l
/system
umount
-l
/vendor 2>/dev/null
...
...
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