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
topjohnwu
5c4c391f94
Fix typo causing rootfs device bootloops
...
Fix #3134
2020-09-04 04:43:46 -07:00
topjohnwu
4dacffd7a1
Fix some issues with selinux rules
2020-09-04 00:03:24 -07:00
topjohnwu
61599059d5
Fix typo for SAR first stage init
2020-09-03 19:17:25 -07:00
topjohnwu
f32a29911b
Properly detect 2SI init
...
Fix #2994
2020-09-02 21:20:15 -07:00
topjohnwu
b73d5753f2
Minor code cleanups
2020-09-02 02:49:32 -07:00
Simon Shi
2eee335b5f
Track more sepolicy cil files.
...
Reference: https://android.googlesource.com/platform/system/core/+/refs/tags/android-r-beta-3/init/selinux.cpp
2020-08-31 21:38:55 -07:00
vvb2060
e458215f27
Let isolation namespace base on app namespace
2020-08-08 05:21:03 -07:00
vvb2060
fee4031d0f
Keep disable file when module update
2020-08-08 05:19:41 -07:00
topjohnwu
7fc9b908d4
Update Android 11 emulator support
2020-07-27 03:33:11 -07:00
classic-gentleman
0ed524f173
Test for NVIDIA/Tegra partition naming scheme first
...
Fixes https://github.com/topjohnwu/Magisk/issues/3014
2020-07-24 00:26:51 -07:00
topjohnwu
97b72a5941
Revert to old SElinux rules on pre 8.0 devices
...
Fix #2910
2020-07-06 01:13:50 -07:00
topjohnwu
7922f65243
Welcome Gradle Kotlin DSL
2020-07-04 06:54:53 -07:00
Shaka Huang
6dbd9bfb12
Place pthread_mutex_init() before init_list()
...
Fix crash in #2900
Signed-off-by: Shaka Huang <shakalaca@gmail.com>
2020-06-28 07:06:19 -07:00
topjohnwu
6150055a05
Update BusyBox
2020-06-25 04:34:16 -07:00
topjohnwu
43146b8316
Update su request process
...
Due to changes in ec3705f2ed187863efc34af5415495e1ee7775d2, the app can
no longer communicate with the dameon through a socket opened on the
daemon side due to SELinux restrictions. The workaround here is to have
the daemon decide a socket name, send it to the app, have the app create
the socket server, then finally the daemon connects to the app through
the socket.
2020-06-19 03:52:25 -07:00
topjohnwu
44895a86b8
Fix compilation of single applets
2020-06-19 02:45:57 -07:00
topjohnwu
1e2f776b83
Move logging.hpp
2020-06-17 01:17:28 -07:00