Commit Graph

264 Commits

Author SHA1 Message Date
cb7148a24c Switch to debug logging in modules 2020-06-01 04:22:57 -07:00
2f824f59dc Better logging system
Use C++ magic to strip out debug logs at compile time
2020-06-01 04:15:37 -07:00
e02e46d0fc Detect volume down key combo for safe mode
It is possible that a module is breaking the device so bad that zygote
cannot even be started. In this case, system_server cannot start and
detect the safe mode key combo, set the persist property, and reboot.

Also on old Android versions, the system directly goes to safe mode
after detecting a key combo without rebooting, defeating the purpose of
Magisk's safe mode protection if we only check for the persist property.

Directly adding key combo check natively in magiskd allows us to enter
Magisk safe mode before the system is even aware of it.
2020-05-19 04:57:47 -07:00
fc1844b4df Update policy for handling /data/adb 2020-05-18 23:29:26 -07:00
4497e0aaca Don't expose module_list 2020-05-18 05:36:02 -07:00
c3e045e367 Use daemon state to determine late prop hiding 2020-05-18 05:21:47 -07:00
501d3e6c32 Maintain global daemon status 2020-05-18 05:18:49 -07:00
b27b9c1d18 Minor code changes 2020-05-18 04:56:51 -07:00
dbdb0a2560 Move late props to boot complete 2020-05-18 03:51:41 -07:00
97db49a57b Move vendor property manipulation to late start 2020-05-17 15:01:37 -07:00
aac6ad73da Fix collect modules 2020-05-16 13:45:22 -07:00
122b4d66b6 Move Android logging out of libutils 2020-05-10 00:48:41 -07:00
0f8f4e361b Update collect log logic 2020-05-10 00:30:11 -07:00
c6569ce022 Fix service scripts 2020-05-09 04:40:05 -07:00
a62bdc58cb Use env variables to enable standalone mode 2020-05-08 04:09:58 -07:00
a5d7c41d20 Support Safe Mode detection
When detecting device is booting as Safe Mode, disable all modules and
MagiskHide and skip all operations. The only thing that'll be available
in this state is root (Magisk Manager will also be disabled by system).

Since the next normal boot will also have all modules disabled, this can
be used to rescue a device in the case when a rogue module causes
bootloop and no custom recovery is available (or recoveries without
the ability to decrypt data).
2020-05-08 00:45:11 -07:00
5fd574a14f Fix --remove-modules command 2020-04-30 01:27:48 -07:00
15f155100c Rewrite skel_node mounting and construction logic
Close #2725
2020-04-24 02:07:46 -07:00
945a52a99f Handle extremely rare edge case 2020-04-22 05:07:50 -07:00
8ca5a048d6 Support system_ext 2020-04-20 23:57:29 -07:00
554ebe7206 Skel dest could not exist
Close #2713
2020-04-20 22:04:57 -07:00
43029f37b1 Cleanup our tracks 2020-04-19 04:57:18 -07:00
dfbd1305b3 Android 11 support 🎉 2020-04-19 02:47:22 -07:00
d959c35723 Make cleaner mount info 2020-04-18 18:50:25 -07:00
69a9d7485b Support injecting magisk bins 2020-04-18 05:15:59 -07:00
dcf07ad8c7 Directly filter '.' and '..' in xreaddir 2020-04-18 04:20:21 -07:00
a73e7e9f99 Introduce new module mount implementation
Rewrite the whole module mounting logic from scratch.
Even the algorithm is different compared to the old one.

This new design focuses on a few key points:
- Modular: Custom nodes can be injected into the mount tree.
  It's the main reason for starting the rewrite (needed for Android 11)
- Efficient: Compared to the existing implementation, this is the most
  efficient (both in terms of computation and memory usage) design I
  currently can come up with.
- Accurate: The old mounting logic relies on handling specifically every
  edge case I can think of. During this rewrite I actually found some
  cases that the old design does not handle properly. This new design is
  architected in a way (node types and its rankings) that it should
  handle edge cases all by itself when constructing mount trees.
2020-04-18 02:00:48 -07:00
e0a281583d Preparation for dynamic tmpfs path 2020-04-12 05:34:56 -07:00
d739dcac2b Remove dependency on magisk.hpp in libutils 2020-04-11 04:40:40 -07:00
dbfde74c1e Clean rootfs in switch_root 2020-04-01 23:37:11 -07:00
aa72a080b0 core: clean up /data/adb/magisk.img, etc. as well
- now that magisk.img -> /data/adb/modules migration is no longer taking place make sure all magisk.img locations get cleaned up
2020-03-26 03:39:49 -07:00
ba7cb47383 Make version reporting consistent 2020-03-23 01:17:13 -07:00
48d417f9af Add symlink for backwards compatibility
The native code has to run with an old verison of Magisk Manager,
add this back so things will work properly.
2020-03-22 21:00:40 -07:00
612b51d48f Disable MagiskHide by default
Since SafetyNet CTS is impossible to achieve, leaving MagiskHide on
by default no longer serves a purpose.

For more details regarding the latest SafetyNet changes, please check:
https://twitter.com/topjohnwu/status/1237656703929180160
https://twitter.com/topjohnwu/status/1237830555523149824

MagiskHide's functionality will continue to exist within the Magisk
project as it is still extremely effective to hide modifications in
userspace (including SafetyNet's basicIntegrity check).

Future MagiskHide improvements _may_ come, but since the holy grail
has been taken, any form of improvement is now a very low priority.
2020-03-13 01:48:14 -07:00
e261579e72 Use standalone mode in boot scripts 2020-03-11 00:11:15 -07:00
a0998009c1 Small native code reorganization 2020-03-09 01:50:30 -07:00
ee1f45aa91 Add new commandline option to get tmpfs root 2020-02-29 15:33:11 -08:00
ebdd6ec40c Fallback to getprop to get SDK_INT
Close #2274, close #2279
2020-02-03 12:58:59 +08:00
cf589f8c64 Fix error loading libsqlite.so
Vendors are always adding “extra libraries” in /vendor/lib* for their own sake, in this case AS*S loaded with customized `libicuuc.so` for Zenf*ne 5z and led to the failure of dynamic loading libsqlite.so:

<quote>
db: dlopen failed: cannot locate symbol "UCNV_FROM_U_CALLBACK_ESCAPE_63" referenced by "/apex/com.android.runtime/lib64/libandroidicu.so"...
</quote>

Signed-off-by: Shaka Huang <shakalaca@gmail.com>

* Minor optimizations

Co-authored-by: John Wu <topjohnwu@gmail.com>
2020-02-01 14:36:34 +08:00
e864919c0b Jellybean supports modules 2020-02-01 14:22:31 +08:00
0a2c99f1dc Use __LP64__ to detect 64 bit 2020-01-22 01:20:14 +08:00
836bfbdd02 Wrapper is no longer needed 2020-01-22 01:17:30 +08:00
b39f407596 Load libsqlite dynamically 2020-01-11 03:20:59 +08:00
615ad0cc5a core: remove remaining legacy workarounds/leftovers 2020-01-10 23:31:43 +08:00
2db1e5cb74 Minor module related fixes 2019-12-30 13:21:39 +08:00
3beffd84d6 Copy sepolicy rules to persist every boot 2019-12-22 03:44:07 -05:00
3b9f7885e0 Stop using chdir 2019-12-21 05:29:38 -05:00
7668e45890 Cleanup legacy code 2019-12-17 17:15:31 -05:00
695c8bc5d0 Detect package name for copying binaries
Close #2152
2019-12-17 16:38:12 -05:00
af060b3132 General QoL changes 2019-12-13 00:37:06 -05:00