Commit Graph

45 Commits

Author SHA1 Message Date
vvb2060 4d80361805 core: search for first available dir in PATH 2025-02-15 15:08:26 -08:00
topjohnwu 540253a55b Remove unnecessary FFI 2025-02-14 11:24:46 -08:00
topjohnwu 0469817781 Cleanup code and bindings 2025-02-02 22:08:41 +08:00
topjohnwu 4fb6a7268c Fix SDK 27 and 28 tests 2025-01-31 02:52:27 +08:00
topjohnwu 15a605765c Fully implement daemon side of Zygisk in Rust 2025-01-31 02:52:27 +08:00
topjohnwu 0d8d6290a3 Move module list into MagiskD 2025-01-31 02:52:27 +08:00
LoveSy d2768357da Support systemlessly deleting files or folders
After we refactor the magic mount and always mount folder as tmpfs,
we can easily support deleting files or folders now. We recognize
dummy devices with major number 0 and minor number 0 as an indicator
for removing files and folders. This indicator is borrowed from
overlayfs.
2024-12-27 15:57:54 -08:00
vvb2060 849b284da5 core: insert symlink magisk_node 2024-12-06 02:19:32 -08:00
vvb2060 f723ef153b zygisk_node: skip magisk32 if 64bit zygote only 2024-08-22 11:58:29 -07:00
LoveSy 1db80228e8 Move worker mount to magiskinit 2024-08-15 02:39:51 -07:00
LoveSy a07b9315a5 Add riscv64 support 2024-07-02 14:34:22 -07:00
topjohnwu fb5ee86615 Install one single ABI in ramdisk 2024-03-31 22:01:22 -07:00
LoveSy 156b0e67ca No need extra tmpfs for worker 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
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
LoveSy 98861f0b5a Clone dir attr for tmpfs in advance 2023-12-13 03:28:30 +08:00
LoveSy f7e471616d Fix clone_attr for newly created dirs 2023-12-10 23:37:47 +08:00
LoveSy 1fd49e4987 Make tmpfs mount of magic mount atomic
This avoid system libraries disappear temporarily during magic mount,
which causes some dynamic executables fails to run during post-fs-data.
2023-12-08 13:59:02 +08:00
LoveSy d49b02b274 Fix zygiskd not restart when zygote restarts 2023-12-07 20:44:44 +08:00
topjohnwu 65c18f9c09 Restructure project files 2023-11-08 01:46:02 -08:00
LoveSy cbc6d40b2c Clean up codes 2023-11-07 14:25:57 -08:00
LoveSy 9fbd079560 Refactor zygisk to use native bridge to inject
Co-authored-by: vvb2060 <vvb2060@gmail.com>
Co-authored-by: topjohnwu <topjohnwu@gmail.com>
2023-11-07 14:25:57 -08:00
topjohnwu 16ae4aedf1 Remove usage of MAGISKTMP 2023-11-02 15:50:36 -07:00
topjohnwu a55d570213 Move more I/O operations into Rust 2023-09-27 02:28:43 -07:00
topjohnwu 5e2ef1b7f4 Better bytes support in C++ 2023-06-06 17:11:42 -07:00
topjohnwu f8d62a4b6c Move resetprop under core 2023-05-18 22:15:49 -07:00
topjohnwu cd7a335d0f Cleanup implementation 2023-05-18 20:26:20 -07:00
LoveSy b9e6937996 Make magisk node ro as well 2023-05-10 00:13:18 -07:00
LoveSy 52a98cbd51 Temp workaround for module file context 2023-04-10 19:30:37 -07:00
LoveSy b505819ca2 Fix a typo 2023-04-04 12:28:08 -07:00
LoveSy 15cab86152 Make module mirror read only 2023-04-02 22:03:02 -07:00
topjohnwu 4e2b88b3d0 Rename rules to preinit
It is possible that we will allow more preinit files for modules.
Rename the partition and folders from rules to preinit.
2023-03-21 00:40:11 -07:00
LoveSy 981ccabbef No support for partitions w/o symlink in /system 2023-03-06 05:23:40 -08:00
topjohnwu 3d3082bc82 Minor optimizations 2023-02-26 01:14:10 -08:00
topjohnwu 744ebca206 Don't let inter_node upgrade to module_node 2023-02-25 22:05:50 -08:00
topjohnwu 92077ebe53 Refactor module and node implementation 2023-02-25 18:19:46 -08:00
LoveSy 78ca682bc5 Always mount tmpfs for dirs
https://android-review.googlesource.com/c/platform/system/core/+/928592
2023-02-25 18:19:46 -08:00
LoveSy af01a36296 Refactor magic mount to support overlayfs
Previously, magic mount creates its own mirror devices and mount
mirror mount points. With these mirror mount points, magic mount
can get the original files and directory trees. However, some
devices use overlayfs to modify some mount points, and thus after
magic mount, the overlayed files are missing because the mirror
mount points do not contain the overlayed files. To address this
issue and make magic mount more compatible, this patch refactors
how magic mount works.

The new workflows are as follows:
1. make MAGISKTMP a private mount point so that we can create the
   private mount points there
2. for mirror mount points, we instead of creating our own mirror
   devices and mount the mirror mount points, we "copy" the
   original mount points by recursively mounting /
3. to prevent magic mount affecting the mirror mount points, we
   recursively set the mirror mount points private
4. to trace the mount points we created for reverting mounts, we
   again make the mirror mount points shared, and by this way we
   create a new peer group for each mirror mount points
5. as for tracing the newly created tmpfs mount point by magic
   mount, we create a dedicated tmpfs mount point for them, namely
   worker mount point, and obviously, it is shared as in a newly
   created peer group for tracing
6. when reverting mount points by magic mount, we can then trace
   the peer group id and unmount the mount points whose peer group
   ids are created by us

The advantages are as follows:
1. it is more compatible, (e.g., with overlayfs, fix #2359)
2. it can mount more partitions for which previous implementation
   cannot create mirror mount points (fix #3338)
2023-02-25 18:19:46 -08:00
topjohnwu cd8a2edefb Reduce unnecessary formatting 2023-01-20 14:41:34 +08:00
LoveSy 4318ab5cd2 Reuse tmpfs for magic mount
As we already have a tmpfs (magisktmp), we can reuse them for
magic mount
2023-01-20 03:49:40 +08:00
LoveSy 67845f9c21 Clear sepolicy rules when disable/remove modules
Co-authored-by: topjohnwu <topjohnwu@gmail.com>
2023-01-19 04:25:44 +08:00
LoveSy 37b81ad1f6 Refine module preparation return value 2022-12-26 17:17:41 -08:00
残页 33f5154269 Inject binaries into /system if sbin not accessible
Some Android 11+ devices have the /sbin partition but not accessible by the global shell (`PATH` doesn't contain `/sbin`). Not only custom ROMs but also some stock ROMs have the same behavior so I believe it is something we need to deal with.
Fix #6427, fix #4309, fix #5728, fix #3593
2022-12-13 13:54:55 -08:00
topjohnwu 9806b38d8e Introduce zygisk loader
Use a separate library for 1st stage
2022-08-19 04:49:19 -07:00
topjohnwu b9e89a1a2d Restructure the native module
Consolidate all code into the src folder
2022-07-23 13:51:56 -07:00