Commit Graph

227 Commits

Author SHA1 Message Date
f152bea8d8 Trim dev name 2019-02-26 03:04:17 -05:00
8032bd0bac Introduce /data mirror
Since we switched to imageless Magisk, module files are directly
stored in /data. However, /data is mounted with nosuid, which also
prevents SELinux typetransition to work (auto transition from one
domain to another when executing files with specific context).
This could cause serious issues when we are replacing system critical
components (e.g. app_process for Xposed), because most of them
are daemons that run in special process domains.

This commit introduced /data mirror. Using similar mirroring technique
we used for system and vendor, we mount another mirror that mounts
/data without nosuid flag. All module files are then mounted from this
mirror mountpoint instead of directly from /data.

Close #1080
2019-02-25 06:13:42 -05:00
0c227f2917 Always clone attribute from existing files to module files
This makes sure no weird permission/SELinux issues shall happen
2019-02-25 05:17:08 -05:00
c9fa8118d1 Some code adjustments 2019-02-24 23:09:34 -05:00
63b18246d8 Add compressed ramdisk support 2019-02-24 20:39:01 -05:00
bd4e5bfc1a Some minor optmizations 2019-02-24 17:45:08 -05:00
6ca8db2f0c Welcome to the 64 bit world!
Close #854
2019-02-24 08:13:27 -05:00
3356d7b6ff More friendly to obscure/outdated custom recoveries
Close #1049
2019-02-24 04:45:47 -05:00
17ab55115a Add newlines before rc scripts
Based on #1090, thanks to @shakalaca. Close #1090, close #1086
2019-02-18 03:30:30 -05:00
31a27838f5 Fix help message for magisk 2019-02-18 03:09:01 -05:00
2f1b0fe57f Remove unused scripts 2019-02-18 03:08:40 -05:00
14aa6041ec Use a better function to read through files 2019-02-17 22:30:23 -05:00
f4f2274c60 Auto reinstall system apps on hide list
Since we are parsing through /data/app/ to find target APKs for
monitoring, system apps will not be covered in this case.
Automatically reinstall system apps as if they received an update
and refresh the monitor target after it's done.

As a bonus, use RAII idioms for locking pthread_mutex_t.
2019-02-16 02:24:35 -05:00
19ee189468 Separate scripting code 2019-02-15 20:45:05 -05:00
a19c7215d2 Better nice name 2019-02-15 04:31:39 -05:00
8b84039f1f Run service scripts actually in parallel 2019-02-15 01:30:47 -05:00
9430dbb96c Make sure logcat process does not become a zombie 2019-02-14 17:36:18 -05:00
014105f0a0 Bring back log dumping 2019-02-14 04:27:30 -05:00
7384d2d330 Completely rework MagiskHide
Previous MagiskHide detects new app launches via listening through logcat
and filtering launch info messages.

This is extremely inefficient and prone to cause multiple issues both
theoratically and practically.

Rework this by using inotify to detect open() syscalls to target APKs.

This also solves issues related to Zygote-forked caching mechanisms such as
OnePlus OxygenOS' embryo.

Signed-off-by: Park Ju Hyung <qkrwngud825@gmail.com>
2019-02-12 23:39:57 -05:00
0f55fcafe8 Migrate EXT4 images instead of removing them 2019-02-12 16:13:31 -05:00
ed027ec3ee Refactor build flags 2019-02-12 05:17:02 -05:00
b3fd79cbb9 Add more cmdline options and specify as internal API 2019-02-12 04:05:51 -05:00
ed4df87b57 Remove imgtool 2019-02-12 02:44:46 -05:00
1321f097b8 Remove usage of magisk.img
Mounting ext4 images causes tons of issues, such as unmountable with broken F2FS drivers.
Resizing is also very complicated and does not work properly on all devices.
Each step in either measuring free space, resizing, and shrinking the image is a
point of failure, and either step's failure could cause the module system completely broken.

The new method is to directly store modules into /data/adb/modules, and for module installation
on boot /data/adb/modules_update. Several compatibility layers has been done: the new path is
bind mounted to the old path (/sbin/.magisk/img), and the helper functions in util_functions.sh
will now transparently make existing modules install to the new location without any changes.

MagiskHide is also updated to unmount module files stored in this new location.
2019-02-12 02:14:57 -05:00
ab47b717b1 Reorganize scripts 2019-02-11 17:14:07 -05:00
992a9ea2f9 Fix EMUI 9 detection 2019-02-11 02:26:15 -05:00
228351fc13 Prevent bootloop on non system-as-root devices
Close #1058
2019-02-10 13:51:41 -05:00
8a5b6f2b86 Block all signals in daemon 2019-02-10 04:18:50 -05:00
71ecbb3af3 Clean/refactor includes 2019-02-10 03:57:51 -05:00
5746614ccf Keep track of timestamps and skip old logs 2019-02-10 03:16:52 -05:00
3a422c3f15 Remove magisklogd, use threads and BlockingQueue 2019-02-10 01:05:19 -05:00
b3242322fd Harden socket verification
- Do not allow connections to magiskd from binaries other than the one started the server
- Do not allow connections to magisklogd without root access
2019-02-09 15:02:46 -05:00
1f5267204b Better cmdline parsing 2019-02-09 05:23:56 -05:00
ed25e1bbd6 Directly inject services into init.rc 2019-02-09 02:48:05 -05:00
c8491d008f Move sbin overlay creation to magiskinit 2019-02-09 01:51:46 -05:00
6698c189fc Support non-ext4 filesystem for vendor and system
Signed-off-by: Erfan Abdi <erfangplus@gmail.com>
2019-02-07 00:45:30 -05:00
093f971896 Fix small log error 2019-02-03 03:57:49 -05:00
4df1047b07 Native project restructuring 2019-01-30 03:35:07 -05:00
cce636224c Reorganization 2018-09-27 18:26:41 -04:00
60b3b8ddce Better incremental builds 2018-09-27 03:56:56 -04:00
df8b047bca Generalize logging interface 2018-09-27 03:11:10 -04:00
1d53335ae5 Dynamic load libselinux 2018-09-27 00:09:59 -04:00
906b4aad9e New method of communication
Introduce a new communication method between Magisk and Magisk Manager.

Magisk used to hardcode classnames and send broadcast/start activities to
specific components. This new method makes no assumption of any class names,
so Magisk Manager can easily be fully obfuscated.

In addition, the new method connects Magisk and Magisk Manager with random
abstract Linux sockets instead of socket files in filesystems, bypassing
file system complexities (selinux, permissions and such)
2018-09-16 04:16:18 -04:00
2fba3f213b Use proper socket address length 2018-09-15 02:49:19 -04:00
6f41d9855b Randomize service names
Fix Aniplex Game detections.
Close #502, close #513
2018-09-08 23:17:00 -04:00
0543239cca Do not merge binaries if fake symlink 2018-09-01 11:15:05 -04:00
a8478ace18 Use macros 2018-08-31 03:51:30 -04:00
72cf5f3f9f Temporary disable module bootloop prevention
Some devices don't like it, need further tests before pushing to production
2018-08-31 03:23:59 -04:00
d8405f0d05 Make recovery installed on on system_root devices normal 2018-08-12 00:16:59 +08:00
afcb3d8f34 Fix XZ decompression in magiskinit 2018-08-10 15:04:32 +08:00