Commit Graph

100 Commits

Author SHA1 Message Date
topjohnwu 340bac7e42 Add decompression command 2019-02-23 16:53:51 -05:00
topjohnwu 1d3ce9fef1 Support loading CPIO from a chunk of bytes 2019-02-23 16:16:35 -05:00
topjohnwu 4a398642b8 Set mode in constructor 2019-02-23 15:22:11 -05:00
topjohnwu 9c89e56c56 Add ramdisk compression option 2019-02-23 15:04:15 -05:00
topjohnwu 267c59b1f1 Add truncate while open 2019-02-23 13:08:54 -05:00
topjohnwu 2ab17204c6 Add stream output for CPIO 2019-02-23 05:06:07 -05:00
topjohnwu 2d7f130d2c Introduce Java-like OutputStream 2019-02-23 04:51:13 -05:00
topjohnwu f7ae72a36c Move CPIO to libutils 2019-02-23 02:42:26 -05:00
topjohnwu cb8fe70734 Modernize CPIO code 2019-02-22 02:56:18 -05:00
topjohnwu 660e0dc09a Fix MagiskHide unmount daemon
Close #1101
2019-02-19 01:50:41 -05:00
topjohnwu 692f893e1f Monitor /data/system/packages.xml
Reinstalling system apps as data creates tons of issues.
Calling pm path <pkg> is extremely expensive and doesn't work in post-fs-data.
Parse through packages.xml to get APK path and UID at the same time.
As a bonus, we don't need to traverse /data/app for packages anymore.
2019-02-18 03:05:13 -05:00
topjohnwu 14aa6041ec Use a better function to read through files 2019-02-17 22:30:23 -05:00
topjohnwu 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
topjohnwu a19c7215d2 Better nice name 2019-02-15 04:31:39 -05:00
topjohnwu 9430dbb96c Make sure logcat process does not become a zombie 2019-02-14 17:36:18 -05:00
topjohnwu d584360de2 More optimized APK traversal 2019-02-14 00:52:59 -05:00
topjohnwu c66cabd80f Several MagiskHide improvements
- Directly get UID instead of traversing /data/data everytime
- Use /data/user_de/0 instead of /data/data on Android 7.0+
- Update hide_uid set incrementally when adding/initializing targets
- Guard hide_uid set with the same lock as hide_list vector
- Do not add GMS package into database; only add to in-memory list
2019-02-13 06:16:26 -05:00
topjohnwu 0f55fcafe8 Migrate EXT4 images instead of removing them 2019-02-12 16:13:31 -05:00
topjohnwu ed027ec3ee Refactor build flags 2019-02-12 05:17:02 -05:00
topjohnwu ed4df87b57 Remove imgtool 2019-02-12 02:44:46 -05:00
topjohnwu 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
topjohnwu 71ecbb3af3 Clean/refactor includes 2019-02-10 03:57:51 -05:00
topjohnwu 5746614ccf Keep track of timestamps and skip old logs 2019-02-10 03:16:52 -05:00
topjohnwu 3a422c3f15 Remove magisklogd, use threads and BlockingQueue 2019-02-10 01:05:19 -05:00
topjohnwu c8491d008f Move sbin overlay creation to magiskinit 2019-02-09 01:51:46 -05:00
topjohnwu d32b788988 Rewrite exec_command 2019-01-26 13:39:24 -05:00
topjohnwu 7565ea2787 Remove strdup2 2019-01-26 13:00:19 -05:00
topjohnwu 9275975b2c Re-organize functions 2019-01-26 06:00:23 -05:00
topjohnwu b7f69238a1 Fix segfault on several devices 2019-01-22 17:19:10 -05:00
topjohnwu a4f8bd4ee0 Bump to C++17 2019-01-20 00:07:58 -05:00
topjohnwu 3e4c12cf56 Migrate to STL 2019-01-19 23:59:37 -05:00
topjohnwu 3ccac8c3b8 Terminate forked children for exec after failure 2018-12-28 16:33:26 +08:00
topjohnwu 23f8f35098 Stop using system STL since it is no longer supported 2018-12-25 19:38:44 +08:00
topjohnwu 109891d668 Make apk_install more portable 2018-12-05 18:36:27 -05:00
topjohnwu f69a004c1c Use raw execve
Some devices have broken libc...
2018-11-28 00:07:57 -05:00
topjohnwu e8cba3524e Kill target processes properly 2018-11-27 03:56:14 -05:00
topjohnwu 29457a1d28 Small adjustments 2018-11-26 03:26:45 -05:00
topjohnwu 731455f164 Update exec functions signatures 2018-11-26 03:06:48 -05:00
topjohnwu b01a8cace6 Always try native accept4 2018-11-26 02:57:34 -05:00
topjohnwu ec4723096f Prevent file descriptor from unclosed 2018-11-23 21:15:44 -05:00
topjohnwu 38fcc57bbf Use component name as targets
Services can name their process name arbitrarily, for instance the service in
com.google.android.gms that is responsible for SafetyNet is named
com.google.android.gms.unstable. There are many apps out in the wild use
dedicated services with special names to detect root, and previously the user
is expected to add all of them to the hide list.

In this commit, we change from targeting process names to component names.
On Android, component names are composed of <pkg>/<cls>. When targeting
component names, we can always know what application spawned the new process.
This means that if the user adds a package name to the hidelist, MagiskHide can
now target ALL possible processes of that specific application.

To abide with this change, the default SafetyNet target is now changed from
com.google.android.gms.unstable (process name) to
com.google.android.gms/.droidguard.DroidGuardService (component name)
2018-11-23 15:47:49 -05:00
topjohnwu baae1fc84f Modernize selinux stub 2018-11-20 03:49:44 -05:00
topjohnwu 3a2a2a4ffa Micro optimizations 2018-11-13 02:07:02 -05:00
topjohnwu 9592a69986 Prevent unmounting non-custom mount points 2018-11-13 01:53:48 -05:00
topjohnwu ef9d463bd7 Fix PLOGE 2018-11-08 06:07:02 -05:00
topjohnwu 8745c7884e Rename Array to Vector
Finally get rid of the C style vector, rename the template class to its proper name
2018-11-08 05:03:59 -05:00
topjohnwu 3d269fe8be Migrate MagiskInit to C++ 2018-11-08 04:20:16 -05:00
topjohnwu 59ba350f34 Fix copy and move assigments of Array 2018-11-07 04:09:37 -05:00
topjohnwu 7c12bf7fa1 Modernize code base 2018-11-07 02:10:38 -05:00
topjohnwu 9fe5f37337 Minor code improvements 2018-11-05 14:37:47 -05:00