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
83ae66da
Commit
83ae66da
authored
Nov 15, 2018
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Change stock boot image SHA1 backup method
parent
89e0be00
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
38 additions
and
52 deletions
+38
-52
utils.sh
app/src/full/res/raw/utils.sh
+3
-2
main.cpp
native/jni/magiskboot/main.cpp
+2
-8
ramdisk.cpp
native/jni/magiskboot/ramdisk.cpp
+25
-40
boot_patch.sh
scripts/boot_patch.sh
+8
-2
No files found.
app/src/full/res/raw/utils.sh
View file @
83ae66da
...
@@ -79,8 +79,9 @@ mm_patch_dtbo() {
...
@@ -79,8 +79,9 @@ mm_patch_dtbo() {
}
}
restore_imgs
()
{
restore_imgs
()
{
local
SHA1
=
`
cat
/.backup/.sha1
`
local
SHA1
=
`
grep_prop SHA1 /.backup/.magisk
`
[
-z
$SHA1
]
&&
local
SHA1
=
`
grep_prop
#STOCKSHA1`
[
-z
$SHA1
]
&&
local
SHA1
=
`
cat
/.backup/.sha1
`
[
-z
$SHA1
]
&&
local
SHA1
=
`
grep_prop
#STOCKSHA1 /.backup/.magisk`
[
-z
$SHA1
]
&&
return
1
[
-z
$SHA1
]
&&
return
1
local
STOCKBOOT
=
/data/stock_boot_
${
SHA1
}
.img.gz
local
STOCKBOOT
=
/data/stock_boot_
${
SHA1
}
.img.gz
local
STOCKDTBO
=
/data/stock_dtbo.img.gz
local
STOCKDTBO
=
/data/stock_dtbo.img.gz
...
...
native/jni/magiskboot/main.cpp
View file @
83ae66da
...
@@ -57,18 +57,12 @@ static void usage(char *arg0) {
...
@@ -57,18 +57,12 @@ static void usage(char *arg0) {
" 0:stock 1:Magisk 2:unsupported (phh, SuperSU, Xposed)
\n
"
" 0:stock 1:Magisk 2:unsupported (phh, SuperSU, Xposed)
\n
"
" patch KEEPVERITY KEEPFORCEENCRYPT
\n
"
" patch KEEPVERITY KEEPFORCEENCRYPT
\n
"
" Ramdisk patches. KEEP**** are boolean values
\n
"
" Ramdisk patches. KEEP**** are boolean values
\n
"
" backup ORIG
[SHA1]
\n
"
" backup ORIG
\n
"
" Create ramdisk backups from ORIG
\n
"
" Create ramdisk backups from ORIG
\n
"
" SHA1 of stock boot image is optional
\n
"
" restore
\n
"
" restore
\n
"
" Restore ramdisk from ramdisk backup stored within incpio
\n
"
" Restore ramdisk from ramdisk backup stored within incpio
\n
"
" magisk ORIG KEEPVERITY KEEPFORCEENCRYPT [SHA1]
\n
"
" Do Magisk patches and backups all in one step
\n
"
" Create ramdisk backups from ORIG
\n
"
" KEEP**** are boolean values
\n
"
" SHA1 of stock boot image is optional
\n
"
" sha1
\n
"
" sha1
\n
"
" Print stock boot SHA1 if previously
stored
\n
"
" Print stock boot SHA1 if previously
backed up in ramdisk
\n
"
"
\n
"
"
\n
"
" --dtb-<cmd> <dtb>
\n
"
" --dtb-<cmd> <dtb>
\n
"
" Do dtb related cmds to <dtb> (modifications are done directly)
\n
"
" Do dtb related cmds to <dtb> (modifications are done directly)
\n
"
...
...
native/jni/magiskboot/ramdisk.cpp
View file @
83ae66da
...
@@ -13,7 +13,7 @@ public:
...
@@ -13,7 +13,7 @@ public:
int
test
();
int
test
();
char
*
sha1
();
char
*
sha1
();
void
restore
();
void
restore
();
void
backup
(
Vector
<
cpio_entry
*>
&
bak
,
const
char
*
orig
,
const
char
*
sha1
);
void
backup
(
const
char
*
orig
);
};
};
void
magisk_cpio
::
patch
(
bool
keepverity
,
bool
keepforceencrypt
)
{
void
magisk_cpio
::
patch
(
bool
keepverity
,
bool
keepforceencrypt
)
{
...
@@ -64,16 +64,26 @@ int magisk_cpio::test() {
...
@@ -64,16 +64,26 @@ int magisk_cpio::test() {
return
STOCK_BOOT
;
return
STOCK_BOOT
;
}
}
#define for_each_line(line, buf, size) \
for (line = (char *) buf; line < (char *) buf + size && line[0]; line = strchr(line + 1, '\n') + 1)
char
*
magisk_cpio
::
sha1
()
{
char
*
magisk_cpio
::
sha1
()
{
char
sha1
[
41
];
char
sha1
[
41
];
char
*
line
;
for
(
auto
&
e
:
arr
)
{
for
(
auto
&
e
:
arr
)
{
if
(
!
e
)
continue
;
if
(
!
e
)
continue
;
if
(
e
->
filename
==
"init.magisk.rc"
||
e
->
filename
==
"overlay/init.magisk.rc"
)
{
if
(
e
->
filename
==
"init.magisk.rc"
||
e
->
filename
==
"overlay/init.magisk.rc"
)
{
for
(
char
*
pos
=
(
char
*
)
e
->
data
;
pos
<
(
char
*
)
e
->
data
+
e
->
filesize
;
for_each_line
(
line
,
e
->
data
,
e
->
filesize
)
{
pos
=
strchr
(
pos
+
1
,
'\n'
)
+
1
)
{
if
(
strncmp
(
line
,
"#STOCKSHA1="
,
11
)
==
0
)
{
if
(
memcmp
(
pos
,
"# STOCKSHA1="
,
12
)
==
0
)
{
strncpy
(
sha1
,
line
+
12
,
40
);
pos
+=
12
;
sha1
[
40
]
=
'\0'
;
memcpy
(
sha1
,
pos
,
40
);
return
strdup
(
sha1
);
}
}
}
else
if
(
e
->
filename
==
".backup/.magisk"
)
{
for_each_line
(
line
,
e
->
data
,
e
->
filesize
)
{
if
(
strncmp
(
line
,
"SHA1="
,
5
)
==
0
)
{
strncpy
(
sha1
,
line
+
5
,
40
);
sha1
[
40
]
=
'\0'
;
sha1
[
40
]
=
'\0'
;
return
strdup
(
sha1
);
return
strdup
(
sha1
);
}
}
...
@@ -109,8 +119,9 @@ void magisk_cpio::restore() {
...
@@ -109,8 +119,9 @@ void magisk_cpio::restore() {
rm
(
"magisk"
,
true
);
rm
(
"magisk"
,
true
);
}
}
void
magisk_cpio
::
backup
(
Vector
<
cpio_entry
*>
&
bak
,
const
char
*
orig
,
const
char
*
sha1
)
{
void
magisk_cpio
::
backup
(
const
char
*
orig
)
{
cpio_entry
*
m
,
*
n
,
*
rem
,
*
cksm
;
Vector
<
cpio_entry
*>
bak
;
cpio_entry
*
m
,
*
n
,
*
rem
;
char
buf
[
PATH_MAX
];
char
buf
[
PATH_MAX
];
m
=
new
cpio_entry
();
m
=
new
cpio_entry
();
...
@@ -122,16 +133,6 @@ void magisk_cpio::backup(Vector<cpio_entry*> &bak, const char *orig, const char
...
@@ -122,16 +133,6 @@ void magisk_cpio::backup(Vector<cpio_entry*> &bak, const char *orig, const char
rem
->
filename
=
".backup/.rmlist"
;
rem
->
filename
=
".backup/.rmlist"
;
rem
->
mode
=
S_IFREG
;
rem
->
mode
=
S_IFREG
;
if
(
sha1
)
{
fprintf
(
stderr
,
"Save SHA1: [%s] -> [.backup/.sha1]
\n
"
,
sha1
);
cksm
=
new
cpio_entry
();
cksm
->
filename
=
".backup/.sha1"
;
cksm
->
mode
=
S_IFREG
;
cksm
->
data
=
strdup
(
sha1
);
cksm
->
filesize
=
strlen
(
sha1
)
+
1
;
bak
.
push_back
(
cksm
);
}
magisk_cpio
o
(
orig
);
magisk_cpio
o
(
orig
);
// Remove possible backups in original ramdisk
// Remove possible backups in original ramdisk
...
@@ -193,6 +194,9 @@ void magisk_cpio::backup(Vector<cpio_entry*> &bak, const char *orig, const char
...
@@ -193,6 +194,9 @@ void magisk_cpio::backup(Vector<cpio_entry*> &bak, const char *orig, const char
bak
.
push_back
(
rem
);
bak
.
push_back
(
rem
);
else
else
delete
rem
;
delete
rem
;
if
(
bak
.
size
()
>
1
)
insert
(
bak
);
}
}
...
@@ -224,29 +228,10 @@ int cpio_commands(int argc, char *argv[]) {
...
@@ -224,29 +228,10 @@ int cpio_commands(int argc, char *argv[]) {
cpio
.
restore
();
cpio
.
restore
();
}
else
if
(
strcmp
(
cmdv
[
0
],
"sha1"
)
==
0
)
{
}
else
if
(
strcmp
(
cmdv
[
0
],
"sha1"
)
==
0
)
{
char
*
sha1
=
cpio
.
sha1
();
char
*
sha1
=
cpio
.
sha1
();
if
(
sha1
)
if
(
sha1
)
printf
(
"%s
\n
"
,
sha1
);
printf
(
"%s
\n
"
,
sha1
);
free
(
sha1
);
return
0
;
return
0
;
}
else
if
(
cmdc
>=
2
&&
strcmp
(
cmdv
[
0
],
"backup"
)
==
0
)
{
}
else
if
(
cmdc
>=
2
&&
strcmp
(
cmdv
[
0
],
"backup"
)
==
0
)
{
Vector
<
cpio_entry
*>
bak
;
cpio
.
backup
(
cmdv
[
1
]);
cpio
.
backup
(
bak
,
cmdv
[
1
],
cmdv
[
2
]);
cpio
.
insert
(
bak
);
}
else
if
(
cmdc
>=
4
&&
strcmp
(
cmdv
[
0
],
"magisk"
)
==
0
)
{
cpio
.
patch
(
strcmp
(
cmdv
[
2
],
"true"
)
==
0
,
strcmp
(
cmdv
[
3
],
"true"
)
==
0
);
Vector
<
cpio_entry
*>
bak
;
cpio
.
backup
(
bak
,
cmdv
[
1
],
cmdv
[
4
]);
auto
e
=
new
cpio_entry
();
e
->
filename
=
".backup/.magisk"
;
e
->
mode
=
S_IFREG
;
e
->
data
=
xmalloc
(
50
);
snprintf
((
char
*
)
e
->
data
,
50
,
"KEEPVERITY=%s
\n
KEEPFORCEENCRYPT=%s
\n
"
,
cmdv
[
2
],
cmdv
[
3
]);
e
->
filesize
=
strlen
((
char
*
)
e
->
data
)
+
1
;
cpio
.
insert
(
bak
);
cpio
.
insert
(
e
);
}
else
if
(
cmdc
>=
2
&&
strcmp
(
cmdv
[
0
],
"rm"
)
==
0
)
{
}
else
if
(
cmdc
>=
2
&&
strcmp
(
cmdv
[
0
],
"rm"
)
==
0
)
{
bool
r
=
cmdc
>
2
&&
strcmp
(
cmdv
[
1
],
"-r"
)
==
0
;
bool
r
=
cmdc
>
2
&&
strcmp
(
cmdv
[
1
],
"-r"
)
==
0
;
cpio
.
rm
(
cmdv
[
1
+
r
],
r
);
cpio
.
rm
(
cmdv
[
1
+
r
],
r
);
...
@@ -256,7 +241,7 @@ int cpio_commands(int argc, char *argv[]) {
...
@@ -256,7 +241,7 @@ int cpio_commands(int argc, char *argv[]) {
cpio
.
patch
(
strcmp
(
cmdv
[
1
],
"true"
)
==
0
,
strcmp
(
cmdv
[
2
],
"true"
)
==
0
);
cpio
.
patch
(
strcmp
(
cmdv
[
1
],
"true"
)
==
0
,
strcmp
(
cmdv
[
2
],
"true"
)
==
0
);
}
else
if
(
strcmp
(
cmdv
[
0
],
"extract"
)
==
0
)
{
}
else
if
(
strcmp
(
cmdv
[
0
],
"extract"
)
==
0
)
{
if
(
cmdc
==
3
)
{
if
(
cmdc
==
3
)
{
return
cpio
.
extract
(
cmdv
[
1
],
cmdv
[
2
]);
return
!
cpio
.
extract
(
cmdv
[
1
],
cmdv
[
2
]);
}
else
{
}
else
{
cpio
.
extract
();
cpio
.
extract
();
return
0
;
return
0
;
...
...
scripts/boot_patch.sh
View file @
83ae66da
...
@@ -125,11 +125,17 @@ esac
...
@@ -125,11 +125,17 @@ esac
ui_print
"- Patching ramdisk"
ui_print
"- Patching ramdisk"
echo
"KEEPVERITY=
$KEEPVERITY
"
>
config
echo
"KEEPFORCEENCRYPT=
$KEEPFORCEENCRYPT
"
>>
config
[
!
-z
$SHA1
]
&&
echo
"SHA1=
$SHA1
"
>>
config
./magiskboot
--cpio
ramdisk.cpio
\
./magiskboot
--cpio
ramdisk.cpio
\
"add 750 init magiskinit"
\
"add 750 init magiskinit"
\
"magisk ramdisk.cpio.orig
$KEEPVERITY
$KEEPFORCEENCRYPT
$SHA1
"
"patch
$KEEPVERITY
$KEEPFORCEENCRYPT
"
\
"backup ramdisk.cpio.orig"
\
"add 000 .backup/.magisk config"
rm
-f
ramdisk.cpio.orig
rm
-f
ramdisk.cpio.orig
config
##########################################################################################
##########################################################################################
# Binary patches
# Binary patches
...
...
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