Commit Graph

951 Commits

Author SHA1 Message Date
topjohnwu 42278f12ff Fix typo in init daemon 2021-01-18 04:13:54 -08:00
topjohnwu 79140c7636 Proper xxread and xwrite implementation 2021-01-17 01:42:45 -08:00
topjohnwu 1f4c595cd3 Revert to old `su -c` behavior 2021-01-16 23:59:31 -08:00
topjohnwu 67e2a4720e Fix xxread false negatives
Fix #3710
2021-01-16 21:43:53 -08:00
topjohnwu f5c2d72429 Also log pid and tid 2021-01-16 16:10:47 -08:00
topjohnwu 13fbf397d1 Isolated processes might still be hide-able 2021-01-15 20:22:49 -08:00
topjohnwu 04c53c3578 Legacy SAR: use a simpler method to detect is_two_stage 2021-01-15 02:44:40 -08:00
topjohnwu 51bc27a869 Avoid F2FS like a plague 2021-01-15 02:24:11 -08:00
topjohnwu 71b083794c Maintain global mount list 2021-01-14 21:14:54 -08:00
topjohnwu b100d0c503 Revert DTB fstab changes 2021-01-14 19:48:00 -08:00
topjohnwu 76061296c9 Let MagiskBoot handle dtb fstab patching 2021-01-14 06:20:12 -08:00
topjohnwu bb303d2da1 Remove old unused code 2021-01-14 05:59:53 -08:00
topjohnwu c91c070343 Re-enable DTB table rebuilding 2021-01-14 05:45:05 -08:00
topjohnwu aec06a6f61 Get proper total image size 2021-01-14 03:55:27 -08:00
topjohnwu e8ba671fc2 Guard all injection features behind a global flag 2021-01-13 20:07:23 -08:00
topjohnwu 1860e5d133 Dynamically find libselinux.so path 2021-01-13 19:41:57 -08:00
topjohnwu f2cb3c38fe Update mmap implementation
Always map memory as writable, but private when read-only
2021-01-12 22:50:55 -08:00
topjohnwu 9a28dd4f6e Implement MagiskHide through code injection 2021-01-12 03:28:00 -08:00
topjohnwu d2acd59ea8 Minor code refactoring 2021-01-12 00:07:48 -08:00
topjohnwu eb21c8b42e Code cleanups 2021-01-11 02:19:10 -08:00
topjohnwu 70d67728fd Add global toggle for ptrace monitor 2021-01-10 19:27:54 -08:00
topjohnwu e546884b08 Remove isolated process handling in ptrace
Impossible to achieve only through ptrace
2021-01-10 17:18:42 -08:00
topjohnwu b36e6d987d Reorganize MagiskHide code
Prepare for zygote injection hiding
2021-01-10 17:11:00 -08:00
topjohnwu 53c3dd5e8b Auto track JNI method hooks 2021-01-10 05:07:17 -08:00
topjohnwu da723b207a Allow 3rd party code to load pre-specializing
Magisk's policy is to never allow 3rd party code to be loaded in the
zygote daemon process so we have 100% control over injection and hiding.
However, this makes it impossible for 3rd party modules to run anything
before process specialization, which includes the ability to modify the
arguments being sent to these original nativeForkAndXXX methods.

The trick here is to fork before calling the original nativeForkAndXXX
methods, and hook `fork` in libandroid_runtime.so to skip the next
invocation; basically, we're moving the responsibility of process
forking to our own hands.
2021-01-10 01:25:30 -08:00
topjohnwu e050f77198 Don't hook SystemProperties#set
Doesn't seem necessary
2021-01-09 20:39:59 -08:00
topjohnwu 540b4b7ea9 Update pre/post hooks implementation 2021-01-09 17:41:25 -08:00
topjohnwu bbef22daf7 More macro magic to automate more code 2021-01-09 04:28:26 -08:00
topjohnwu 9ed110c91b Add JNI hooks to critical methods 2021-01-08 05:25:44 -08:00
topjohnwu a30d510eb1 Use xHook to hook functions in PLT 2021-01-08 00:53:24 -08:00
topjohnwu ef98eaed8f Proper injection entry and unloading 2021-01-06 23:59:05 -08:00
topjohnwu 2a257f327c Sanitize /proc/PID/environ 2021-01-06 23:41:37 -08:00
topjohnwu 4060c2107c Add preliminary zygote code injection support
Prototyping the injection setup and a clean "self unloading" mechanism.
2021-01-06 22:21:17 -08:00
topjohnwu cd23d27048 Fix remote_write implementation 2021-01-06 21:56:29 -08:00
topjohnwu 18b86e4fd2 Update Android.mk for test binary
Make Android Studio happy
2021-01-05 00:01:02 -08:00
topjohnwu 5f2e22a259 Support remote function call with ptrace
End up not used for anything, but keep it for good
2021-01-02 21:29:45 -08:00
topjohnwu 4e97b18977 Move libsystemproperties to external 2020-12-31 15:06:19 -08:00
topjohnwu f9bde347bc Convert indentation to spaces
The tab war is lost
2020-12-30 22:11:24 -08:00
Billy Laws 947a7d6a2f Support rootwait cmdline parameter on legacy SAR
On devices where the primary storage is slow to probe it makes sense to
wait forever for the system partition to mount, this emulates the
kernel's behaviour when waiting for rootfs on SAR if the rootwait
parameter is supplied.

This issue was encountered with some SD cards on the Nintendo Switch.
2020-12-30 16:43:28 -08:00
topjohnwu 79fa0d3a90 Hide selection improvements 2020-12-30 16:40:22 -08:00
topjohnwu 8e61080a4a Preparation for hiding isolated processes 2020-12-30 15:55:53 -08:00
topjohnwu db4f78d463 Unblock signals before executing commands 2020-12-27 15:05:39 -08:00
vvb2060 c5b452f369 Get boot config properly
https://android.googlesource.com/platform/system/core/+/refs/tags/android-11.0.0_r16/fs_mgr/fs_mgr_boot_config.cpp#93
2020-12-19 15:55:33 -08:00
topjohnwu eee7f097e3 Make post-fs-data scripts block at most 35 secs 2020-12-17 16:54:53 -08:00
topjohnwu 086059ec30 Make sure boot stages are mutually exclusive 2020-12-15 03:40:37 -08:00
topjohnwu 7ff22c68c7 Only try to install APK when no manager is active 2020-12-09 02:15:16 -08:00
topjohnwu 0c28b23224 Fix install_module command 2020-12-09 00:37:15 -08:00
topjohnwu c62dfc1bcc Make logging less error prone 2020-12-06 23:09:24 -08:00
topjohnwu aabe2696fe Cleanup implementations 2020-12-06 03:07:47 -08:00
topjohnwu ae0d605310 Make sure patch_rootdir does not cause crashes 2020-12-06 02:19:57 -08:00
topjohnwu 2a694596b5 Better error handling and logging 2020-12-05 10:23:49 -08:00
topjohnwu ff0a76606e Detect 2SI after system_root mount on legacy SAR 2020-12-04 03:06:21 -08:00
topjohnwu dead74801d Setup log file when manually starting daemon 2020-12-04 01:07:47 -08:00
topjohnwu ab207a1bb3 va_list cannot be reused on x86 2020-12-03 20:53:19 -08:00
topjohnwu f152e8c33d Directly log to log file 2020-12-03 20:15:18 -08:00
topjohnwu 797ba4fbf4 Make sure all logging ends with newline 2020-12-02 00:55:22 -08:00
topjohnwu 552ec1eb35 Header v3 does not have name entry 2020-11-20 22:52:09 -08:00
topjohnwu 0064b01ae0 Trim out \r from string
Fix #3490
2020-11-15 06:30:29 -08:00
topjohnwu e0afbb647b Minor changes 2020-11-13 02:31:54 -08:00
topjohnwu f9c7a4c933 Redirect /data/adb/magisk/busybox
Workaround some stupid Samsung kernel restrictions
2020-11-11 02:26:07 -08:00
topjohnwu 2b759b84b0 Properly reset string 2020-11-09 21:17:21 -08:00
topjohnwu 1e45c63ea5 Scan for zygote periodically
Fix #3417
2020-11-08 03:44:43 -08:00
topjohnwu b14a260827 Offset pid_set by 1
PID starts at 1, not 0
2020-11-08 02:12:35 -08:00
topjohnwu ade1597e03 Support hiding apps not installed in main user
Fix #2181, close #1840
2020-11-08 01:53:18 -08:00
topjohnwu afebe734b8 Fix several things regarding scripting 2020-11-07 14:36:13 -08:00
topjohnwu e21a78164e Properly handle factory resets
Close #3345
2020-11-04 04:50:04 -08:00
topjohnwu 1e0f96d0fd Prefer platform implementation over internal 2020-11-04 04:42:02 -08:00
topjohnwu bf650332d8 Update nanopb 2020-11-04 01:56:49 -08:00
topjohnwu f32e0af830 Update resetprop help msg 2020-11-03 01:21:05 -08:00
topjohnwu 4c94f90e5d Templatize function callbacks 2020-11-03 01:16:55 -08:00
topjohnwu ffb4224640 Don't use reserved symbols 2020-11-03 01:12:33 -08:00
topjohnwu 89fff4830b Mount proper system_root mirror in magiskd 2020-11-03 00:37:08 -08:00
topjohnwu 16e4c67992 Significantly broaden sepolicy.rule compatibility
Previously, Magisk uses persist or cache for storing modules' custom
sepolicy rules. In this commit, we significantly broaden its
compatibility and also prevent mounting errors.

The persist partition is non-standard and also critical for Snapdragon
devices, so we prefer not to use it by default.

We will go through the following logic to find the best suitable
non-volatile, writable location to store and load sepolicy.rule files:

Unencrypted data -> FBE data unencrypted dir -> cache -> metadata -> persist

This should cover almost all possible cases: very old devices have
cache partitions; newer devices will use FBE; latest devices will use
metadata FBE (which guarantees a metadata parition); and finally,
all Snapdragon devices have the persist partition (as a last resort).

Fix #3179
2020-11-02 23:20:38 -08:00
topjohnwu 0feab753fb Fix coding errors and minor changes 2020-10-28 04:17:34 -07:00
Leorize d0b6318b90 init/mount: support for dm-verity verified root
This commit adds support for kernel initialized dm-verity on legacy SAR
devices.

Tested on a Pixel 2 XL with a kernel patch to initialize mappings
specified via the `dm=` kernel parameter even when an initramfs is used.
2020-10-27 03:47:50 -07:00
topjohnwu 966e23b846 magiskinit code tidy-up 2020-10-26 20:46:15 -07:00
topjohnwu 5b8a1fc2a7 Minor renames 2020-10-25 21:41:14 -07:00
topjohnwu 02ea3ca525 Headers doesn't always occupy 1 page 2020-10-25 06:25:42 -07:00
topjohnwu 0632b146b8 Add vendor boot image support to magiskboot 2020-10-25 06:09:36 -07:00
topjohnwu 1b0b180761 Fix COMPRESSED macro
Fix #3383
2020-10-25 05:10:19 -07:00
topjohnwu a079966f97 Migrate to AGP 4.1.0 2020-10-17 06:32:49 -07:00
topjohnwu aaaaa3d044 Minor refactoring 2020-10-15 00:19:11 -07:00
topjohnwu 1edc4449d5 Update lz4 to v1.9.2
Close #3334
2020-10-15 00:04:48 -07:00
topjohnwu f3cd4da026 Make lz4_lg an exception of lz4_legacy 2020-10-14 23:45:06 -07:00
vvb2060 872c55207c Add com.android.i18n to apex path 2020-10-12 01:59:41 -07:00
topjohnwu 339ca6d666 Improve magiskboot info logging 2020-10-12 01:55:33 -07:00
topjohnwu 4aeac3b8f4 Support header_version 3 2020-10-12 01:06:42 -07:00
topjohnwu d625beb7f3 Update `--remove-modules` implementation 2020-10-11 18:30:03 -07:00
topjohnwu 0499588107 Support androidboot.fstab_suffix cmdline flag
Fix #3187
2020-10-08 03:04:12 -07:00
topjohnwu 8b5652ced5 Skip image padding on Pixel C 2020-09-29 02:49:10 -07:00
topjohnwu 6abd9aa8a4 Add new --install-module command
Close #2253
2020-09-26 16:50:41 -07:00
topjohnwu c91ebfbcc1 Pad images to original sizes with zero
Close #2005
2020-09-26 14:36:57 -07:00
topjohnwu 4fd04e62af Remove compressed ramdisk support
It is causing more issues than it addresses
2020-09-24 02:49:09 -07:00
topjohnwu 17b5291bbb Fix Android 8.0 selinux rules 2020-09-20 14:39:11 -07:00
topjohnwu 30e45f863d Remove unnecessary workaround 2020-09-10 01:01:51 -07:00
topjohnwu 434efec860 Use FIFO for su request communication
Fix #3159
2020-09-10 00:38:29 -07:00
topjohnwu c3586fe0a5 Upstream external/selinux
Fix #2645
2020-09-04 19:20:08 -07:00
topjohnwu 11f254e5e5 Fix SELinux support for Android 8.0 - 10
Fix #3139
2020-09-04 14:42:09 -07:00
topjohnwu c61ec2465f Rename function to be more descriptive 2020-09-04 06:21:25 -07:00
topjohnwu fd5ad91d26 Proper 2SI detection 2020-09-04 06:06:03 -07:00