topjohnwu
6219d5fcbf
Update crt0 for 32 bit
2024-04-10 02:43:37 -07:00
topjohnwu
2e4440b702
Support 32-bit magiskboot
2024-04-09 19:34:14 -07:00
topjohnwu
0d9ec0931b
Code cleanup
2024-04-08 23:00:59 -07:00
vvb2060
60e8415369
Make denylist work when zygisk is disabled
...
Co-authored-by: topjohnwu <topjohnwu@gmail.com>
2024-04-08 23:00:50 -07:00
LoveSy
652a26d5d9
Fix comment of sepolicy
2024-04-03 21:03:41 -07:00
topjohnwu
f57839379a
Update RustCrypto dependencies
2024-04-03 21:03:05 -07:00
LoveSy
36bd00a046
Add p521 to magiskboot
2024-04-03 21:03:05 -07:00
topjohnwu
fb5ee86615
Install one single ABI in ramdisk
2024-03-31 22:01:22 -07:00
topjohnwu
30bf5c8448
Fix typos
2024-03-31 14:17:25 -07:00
topjohnwu
2051836a73
Remove unused code
2024-03-30 21:03:51 -07:00
topjohnwu
2cb0af1ff3
Move revert_unmount into Rust
2024-03-30 02:51:39 -07:00
topjohnwu
a1b6568226
Implement preinit related features in Rust
2024-03-28 14:11:03 -07:00
topjohnwu
1eddbfd72c
Use const_format for const strings
2024-03-26 18:03:40 -07:00
topjohnwu
21ed095601
Update crt0
2024-03-25 16:11:02 -07:00
topjohnwu
9a008c17ba
Optimize for binary size
2024-03-22 16:53:44 -07:00
topjohnwu
08dbf728a4
Allow platform_app to access MagiskSU
2024-03-22 16:53:44 -07:00
topjohnwu
4670f762d3
Disable debug only features
2024-03-22 16:53:44 -07:00
topjohnwu
efa49567fa
Fix parsing logic for term and sterm
2024-03-21 18:17:28 -07:00
topjohnwu
0ffc4527a7
Better error reporting
2024-03-21 15:10:34 -07:00
topjohnwu
dd9d43be96
Move sepolicy parsing error message into Rust
2024-03-21 14:07:28 -07:00
topjohnwu
865fca71a5
Optimize sepolicy rules
...
Close #7916
Co-authored-by: vvb2060 <vvb2060@gmail.com>
2024-03-21 01:51:35 -07:00
topjohnwu
6b4baa3bcd
Change a little parsing handling
2024-03-21 00:04:09 -07:00
topjohnwu
a9ee2d7d18
Fix xperm parsing logic
2024-03-20 23:13:54 -07:00
topjohnwu
d654b9cb97
Several code cleanups in sepolicy
2024-03-20 23:09:22 -07:00
LoveSy
4d2921e742
Rewrite sepolicy statement parsing in Rust
2024-03-20 10:12:23 -07:00
vvb2060
ecc74d45d1
Let magic mount optional
2024-03-19 23:21:41 -07:00
vvb2060
5de597f079
No need to unshare
2024-03-19 23:21:41 -07:00
LoveSy
156b0e67ca
No need extra tmpfs for worker
2024-03-19 23:21:41 -07:00
vvb2060
10069215f4
Rename dir name
2024-03-19 23:21:41 -07:00
LoveSy
92b305a389
Remove unnecessary mirror for magic mount
...
Mirror was previously used for accessing the original file during
magic mount when we are using a tmpfs to cover the target. However,
since we introduce atomic mount, we switch all tmpfs mount in
worker and then move to the target at once. It means that we can
still access the original file when we are constructing the tmpfs
mount point. Thus we no longer need mirror.
2024-03-19 23:21:41 -07:00
topjohnwu
d20b30c771
Update libsepol
...
Close #7915
2024-03-19 02:54:01 -07:00
topjohnwu
73c3d741a7
Reorganize some code
2024-03-06 18:07:01 -08:00
osm0sis
991802ab82
Add no decompression flag to magiskboot split
2024-03-06 16:15:30 -08:00
canyie
825c6c4316
Reverse format template argument order
2024-03-06 01:39:16 -08:00
canyie
f00408c793
Fix zygote restart monitor
2024-03-06 01:39:16 -08:00
topjohnwu
a6ff3672af
Update crt0
2024-03-04 16:42:25 -08:00
LoveSy
2290ddeb89
Fix segfault when sepolicy.rule has empty line
2024-03-02 06:15:45 -08:00
topjohnwu
74af79ad03
Update crt0
2024-03-02 05:57:48 -08:00
LoveSy
b6c24a3a8a
No more sony init.real
tricks
...
Co-authored-by: canyie <a1364259@163.com>
Co-authored-by: vvb2060 <vvb2060@gmail.com>
2024-02-29 23:40:00 -08:00
LoveSy
a8c2ae223a
Avoid hexpatch /init for 2SI when possible
...
Previous we hexpatch /init from /system/bin/init to /data/magiskinit
to redirect the second stage init. However, some devices like sony
has /init that does not directly invoke /system/bin/init, and thus
the hexpatch fails.
In this patch, we further make use of AOSP `SwitchRoot` to help us
bind mount /data/magisk to /system/bin/init after `SwitchRoot`.
Two important assumption about 2SI are i) that the second stage init
is always /system/bin/init and ii) that the /sdcard (path after
`SwitchRoot`) is always a symlink to `/storage/self/primary`. When
these assumptions hold, during first stage init (before `SwitchRoot`)
we can bind mount magiskinit to /sdcard, and create a symlink
/storage/self/primary to /system/system/bin/init. By these steps,
during `SwitchRoot`, AOSP init will try to mount move /sdcard to
/system/sdcard. And /system/sdcard is symlink to /storage/self/primary,
it will try to mount move /sdcard to /storage/self/primary. And
/storage/self/primary in ramfs is now a symlink that points to
/system/system/bin/init, thus AOSP will try to mount move /sdcard
(which is a bind mount to magiskinit) to /system/system/bin/init.
After chroot done by AOSP init, we then have a magiskinit bind mount
on /system/bin/init, which is the second stage init.
An edge case is that some devices (like meizu) use 2SI but
does not switch root. In this case, they must already have a /sdcard
in the ramfs, thus we can check if /sdcard exists and fallback to
hexpatch.
2024-02-29 23:40:00 -08:00
topjohnwu
24e46a5971
Build magiskboot with crt0
2024-02-29 02:36:05 -08:00
topjohnwu
b1297c4192
Less usage of C stdio
2024-02-28 15:52:03 -08:00
topjohnwu
9ae328fd84
Further reduce code size
2024-02-28 11:19:56 -08:00
topjohnwu
625a1d6f44
Remove seek support from streams
2024-02-28 11:07:53 -08:00
topjohnwu
987e5f5413
Address clippy warnings
2024-02-27 21:03:34 -08:00
topjohnwu
715284b70d
Reorganize code
2024-02-27 18:14:30 -08:00
LoveSy
62fc7868ac
Use self implemented parse_mount_info
2024-02-27 17:03:22 -08:00
topjohnwu
1a70796339
Replace all parse_mount_info usage with Rust
2024-02-27 03:49:17 -08:00
topjohnwu
af6965eefa
Update init logging implementation
...
Use less std::fs
2024-02-26 17:49:11 -08:00
topjohnwu
8f7d2e38f7
Make crt0 an external submodule
2024-02-26 17:34:17 -08:00
topjohnwu
be433fa667
Use Rust for formatting
...
The fprintf implementation included in crt0 is too rudimental
2024-02-26 00:26:23 -08:00
topjohnwu
0ccd6e7381
Fix fread and fwrite implementation
2024-02-25 23:20:30 -08:00
topjohnwu
907bbbda41
Remove usage of patched static lib
2024-02-25 22:11:34 -08:00
topjohnwu
4393bc077d
Implement string routines
2024-02-25 21:12:19 -08:00
topjohnwu
365b373480
Make it easy to build without crt0
2024-02-24 22:32:22 -08:00
topjohnwu
47e6dd286d
Minor fixes
2024-02-24 22:00:09 -08:00
topjohnwu
0dbaf52566
Make all platforms build properly
2024-02-24 05:10:54 -08:00
topjohnwu
66f49dfab5
Remove unnecessary lock usage
2024-02-24 04:20:28 -08:00
topjohnwu
f8967e9274
Implement strerror
2024-02-24 04:02:46 -08:00
topjohnwu
a4f008fde5
Reorganize files
2024-02-24 03:41:22 -08:00
topjohnwu
e9980c778b
Implement stub functions
2024-02-24 03:41:03 -08:00
topjohnwu
06b6fb0c33
Add setenv
2024-02-24 03:27:09 -08:00
topjohnwu
38cb3d4105
Add dirent implementation
2024-02-24 03:26:53 -08:00
topjohnwu
db99caf258
Use execve directly
2024-02-24 01:47:11 -08:00
topjohnwu
39dbffadfe
Complete stdio
2024-02-24 01:28:58 -08:00
topjohnwu
b7505c3c9c
Remove fopen usage in magiskinit
2024-02-24 00:45:07 -08:00
topjohnwu
3185e5a7ca
Introduce string/mem functions
2024-02-23 23:56:31 -08:00
topjohnwu
e0cbe28711
Add the generic syscall function
2024-02-23 18:41:39 -08:00
topjohnwu
66cee19cea
Add printf and sscanf family
2024-02-23 17:44:12 -08:00
topjohnwu
2ec29ade79
Add all missing syscalls
2024-02-23 14:35:12 -08:00
topjohnwu
c865d4e187
Add memory allocator
2024-02-22 21:22:27 -08:00
topjohnwu
a42a0a53ce
Declare more symbols
2024-02-22 21:22:27 -08:00
topjohnwu
6d79de7d71
Initial crt0 implementation
...
Builds but cannot link, missing a lot of symbols
2024-02-22 21:22:27 -08:00
topjohnwu
18c45ae289
Update cxx and Rust dependencies
2024-02-02 14:35:30 -08:00
LoveSy
356ee1febd
Code clean up
2024-01-30 11:07:37 -08:00
LoveSy
cc044ccc4c
Fix zygisk unload
2024-01-30 11:07:37 -08:00
LoveSy
9c638cc463
Remove rust workaround
2024-01-29 15:07:21 -08:00
topjohnwu
308c9999fa
Properly detect package changes
2024-01-28 00:42:43 -08:00
topjohnwu
930bb8687f
Minor zygisk refactoring
2024-01-25 00:17:47 -08:00
topjohnwu
f2c4288d2d
Run pthread_atfork only once
...
Close #7704
2024-01-25 00:17:05 -08:00
残页
94d3daeadf
Fix Sony init.real check
2024-01-17 16:09:50 -08:00
LoveSy
79334b7702
One stage zygisk loading
2024-01-11 16:19:39 -08:00
LoveSy
df66458db6
Check full path of init.rc instead of its dir
...
Some devices has `/system/etc/init/hw` but has no init.rc in it.
2024-01-11 16:18:57 -08:00
LoveSy
97705704e2
install or uninstall apk asynchronously
2024-01-11 16:16:36 -08:00
topjohnwu
65207f96c8
Create custom cxx binding to Utf8CStr
2023-12-26 23:10:55 +08:00
topjohnwu
1057cb3e3c
Set serial on Rust binding
2023-12-24 04:36:58 +08:00
topjohnwu
2dd23b2518
Update system_properties
2023-12-24 04:36:58 +08:00
topjohnwu
48b1c26dc8
Prevent race condition in wait
2023-12-23 06:33:12 +08:00
topjohnwu
f1e0bc3e4a
Use platform implementation if possible
2023-12-23 06:24:20 +08:00
topjohnwu
38527cd58f
Slightly change wait usage and API
2023-12-23 06:23:29 +08:00
LoveSy
e94d65b4b2
Add resetprop -w
for waiting property change
...
It's very easy to wait for property change both in Java and C++,
but it's not the case in shell script. With this patch, developers
can now easily to wait for property change, just like what we have
in `.rc` files, and to wait for boot complete.
2023-12-23 00:12:42 +08:00
LoveSy
27ece3c7df
Keep mirror shared before magic mount
...
This allows mounting during post-fs-data be kept after magic mount
2023-12-22 21:39:03 +08:00
LoveSy
06687abffc
Fix magisk --stop by making mirror shared
...
Previously mirror is private and then unshared to zygote, which
makes magisk --stop cannot propagate umount mirror to zygote.
2023-12-22 21:39:03 +08:00
vvb2060
deedb462a0
Hide magisk internal mount point
2023-12-22 21:38:15 +08:00
Wang Han
1ef3f6e13b
Remove useless rule for prctl PR_SET_MM
...
* There is no use-case for it now.
2023-12-22 00:36:06 +08:00
topjohnwu
e30bda6c8d
Rebase libsepol to AOSP main
2023-12-21 19:23:02 +08:00
vvb2060
00e9d76a5a
Revert "Avoid doing any unmounts for SysUI"
2023-12-20 17:23:17 +08:00
LoveSy
f41994cb52
Skip svc for ro properties
...
ro properties' triggers should only be triggered once, otherwise it
may undefined behaviour.
This patch avoids triggering ro properties' actions again when using
resetprop to modify them.
Co-authored-by: 5ec1cff <ewtqyqyewtqyqy@gmail.com>
2023-12-18 16:21:08 +08:00
topjohnwu
a003336497
Update system_properties for pre Android 10
2023-12-18 16:21:08 +08:00
LoveSy
401090d6fe
Avoid zygiskd restarts when boot-complete
2023-12-18 16:21:08 +08:00