topjohnwu
2262af728e
Eliminate undefined behavior
2020-01-06 05:31:38 +08:00
topjohnwu
78c64d39ec
Add split command to magiskboot
...
Allow splitting image.*-dtb files to kernel and dtb
2019-12-30 13:04:39 +08:00
Zackptg5
d19f65ce4a
Ignore twrp fstabs
2019-12-28 13:47:05 +08:00
topjohnwu
af060b3132
General QoL changes
2019-12-13 00:37:06 -05:00
topjohnwu
03428329ef
Add new verity and encryption patterns
...
Close #2118
2019-12-03 05:39:39 -05:00
topjohnwu
8d21988656
Support patching DTB/DTBO partition format
2019-12-02 04:34:21 -05:00
topjohnwu
01253f050a
Use smart pointers
2019-11-23 04:57:52 -05:00
topjohnwu
5bee1c56a9
Properly use RAII to reduce complication
2019-11-22 03:01:49 -05:00
topjohnwu
d26d804cc2
Migrate to generic stream implementation
2019-11-21 06:08:02 -05:00
osm0sis
7f6a6016d6
magiskboot: add simple workaround for Samsung offset header variant
...
- some Samsung devices (e.g. Galaxy S5 SMG-900H) use a slightly different AOSP bootimg.h variant with `#define BOOT_NAME_SIZE 20` instead of 16
- since all known examples of these device images do not have anything in the NAME or CMDLINE fields, and the bootloader also accepts standard AOSP images, simply offset the SHA1/SHA256 detection by 4 bytes to avoid false positives from these images, remain an equally effective detection shortcut, and ensure a proper SHA1 checksum on repack
aosp-dtbhdt2-4offhash-seandroid-256sig-samsung_gs5-smg900h-boot.img
UNPACK CHECKSUM [00000000b11580f7d20f70297cdc31e02626def0356c82b90000000000000000]
REPACK CHECKSUM [73b18751202e56c433f89dfd1902c290eaf4eef3e167fcf03b814b59a5e984b6]
AIK CHECKSUM [b11580f7d20f70297cdc31e02626def0356c82b9000000000000000000000000]
This patch should result in a `magiskboot unpack -n boot.img; magiskboot repack boot.img` new-boot.img matching the AIK CHECKSUM above.
2019-11-16 03:23:49 -05:00
John Wu
17a77e2577
Shortcut booleans
2019-10-31 02:44:25 -04:00
John Wu
0f219e5ae6
Better argument parsing logic
2019-10-31 02:44:25 -04:00
osm0sis
353c3c7d81
magiskboot: add unpack -n to help with repack validity tests
...
- support unpack without decompression to allow easy testing of magiskboot's header, structure and hashing handling by comparing repack checksum versus origbootimg
- make -n first to match repack
2019-10-31 02:44:25 -04:00
osm0sis
1512c350df
magiskboot: add SPRD dt support
...
- per https://github.com/USA-RedDragon/sprd-mkbootimg-tools/blob/master/dtbtool.c
- touch up hdr and table naming to be more uniform
2019-10-23 06:58:31 -04:00
topjohnwu
9867a3bd60
Pedantic boot_img_hdr multi-version support
2019-10-15 01:46:29 -04:00
topjohnwu
23c1a1dab8
Some code reorganizing
2019-10-09 16:01:21 -04:00
topjohnwu
f5d054b93c
Add support for PXA DTBs
2019-10-08 23:49:21 -04:00
topjohnwu
d25ae5e0a9
Add __attribute__((packed)) just in case
2019-10-08 16:55:25 -04:00
topjohnwu
c42a51dcbb
Add support to patch DTBH DTBs
...
Apparently, Qualcomm is not the only on creating weird DTB formats,
Samsung also have their own DTBH format for Exynos platforms.
Close #1902
2019-10-08 16:43:27 -04:00
topjohnwu
da3fd92b31
Prevent unsigned overflow
...
Close #1898
2019-10-08 15:55:27 -04:00
topjohnwu
d6c2c821a4
Minor improvements in QCDT logic
2019-10-07 22:57:01 -04:00
Alessandro Astone
dfc65b95f7
qcdt: pad the last dtb too
2019-10-07 22:48:54 -04:00
Alessandro Astone
b45d922463
qcdt: include padding in the table length fields
2019-10-07 22:48:54 -04:00
topjohnwu
f87ee3fcf9
Refactor boot image unpack/repack code base
2019-10-07 04:35:02 -04:00
topjohnwu
e0927cd763
Add support to patch QCDT
...
Old Qualcomn devices have their own special QC table of DTB to
store device trees. Since patching fstab is now mandatory on Android 10,
and for older devices all early mount devices have to be included into
the fstab in DTBs, patching QCDT is crucial for rooting Android 10
on legacy devices.
Close #1876 (Thanks for getting me aware of this issue!)
2019-10-07 00:38:02 -04:00
topjohnwu
21099eabfa
Small changes in DTB code
2019-10-05 17:24:53 -04:00
topjohnwu
544bb7459c
Don't pass by reference
2019-09-26 03:49:05 -04:00
topjohnwu
3d4081d0af
Fix patch verity and forceencrypt
2019-09-26 03:14:56 -04:00
topjohnwu
947dae4900
Rename classes and small adjustments
2019-09-25 23:55:39 -04:00
topjohnwu
16b400964b
Update vars for 2SI
2019-09-22 06:45:23 -04:00
topjohnwu
0fcd0de0d1
Fix potential crash when traversing cpio entries
2019-09-22 06:15:19 -04:00
topjohnwu
0e5a113a0c
Support patching mnt_point in fstab in dtb
2019-09-22 04:17:15 -04:00
topjohnwu
a1ccd44013
Change MagiskBoot patch behavior
...
Use environment variables to toggle configurations for patching ramdisk
2019-09-21 05:55:23 -04:00
topjohnwu
4d91e50d6d
Update dtb patch to not use in-place modification
2019-09-21 05:30:04 -04:00
topjohnwu
120668c7bc
Revise dtb commands CLI
2019-09-20 03:53:58 -04:00
topjohnwu
d81ccde569
Pretty print dtb content
2019-09-20 03:05:14 -04:00
topjohnwu
53de6da26c
Only print relevant info according to header version
2019-09-17 05:11:09 -04:00
topjohnwu
3e30ccdeee
Make parsing behaves according to header
...
Close #1778 . Close #1848
2019-09-17 05:01:04 -04:00
osm0sis
a48c4f9e05
magiskboot: don't clobber /overlay with cpio restore anymore
...
- Magisk "dirty" flashes would remove the /overlay directory which might have been put there by a custom kernel or other mod
- this is a leftover from when Magisk itself used /overlay for placing init.magisk.rc, so just remove this file specifically and leave the rest intact
2019-06-27 18:59:54 -04:00
topjohnwu
e8d900c58e
Fix typo
2019-06-15 18:12:12 -07:00
topjohnwu
a6241ae912
Fix magiskboot unpack option parsing
2019-06-15 16:15:12 -07:00
osm0sis
ee407472cf
magiskboot: allow forcing no recompression on ramdisk.cpio
...
- when input image had a compressed ramdisk magiskboot had no way to force the repack with the uncompressed ramdisk.cpio since it does not formally recognize cpio as its own format, so add a switch to support forcing repacking to any possible ramdisk format regardless of input image
2019-06-10 21:57:39 -07:00
osm0sis
f341f3b2dd
magiskboot: accept forcing recognized but unsupported format compression
...
- when input image had a different supported format (e.g. gzip) magiskboot would not accept a manually compressed ramdisk or kernel in an unsupported format (e.g. lzop) despite being able to recognize it, so instead would double compress using whatever the input format was, breaking the image with, in effect, a ramdisk.cpio.lzo.gz
2019-06-10 21:56:51 -07:00
Ian Macdonald
8513946e09
'magiskboot hexpatch' will exit with status 1 when nothing patched.
2019-06-10 21:41:40 -07:00
osm0sis
bf58205b0a
magiskboot: be clear lzop is not a supported compression format
...
- keep detection and always display detected format type to fascilitate external support
2019-05-30 20:31:24 -07:00
osm0sis
b79d1bcded
magiskboot: clean up remaining unneeded ELF detection bits
...
- default for no format match is UNSUPP_RET (unsupported) so there is no needed to explicitly detect ELF still
2019-05-21 02:49:19 -07:00
Chris Renshaw
17e234f9d5
magiskboot: fix bootimg hdr v2 checksum generation
...
- new AOSP dtb section was missing from HASH_update
2019-05-21 02:49:19 -07:00
osm0sis
2ff5d9606b
magiskboot: add support for remaining Nook HD pre-image loaders
2019-05-19 17:38:41 -07:00
osm0sis
b0d6de783e
Correct magiskboot help
2019-05-09 20:28:48 -07:00
topjohnwu
00a9f18a1e
Build with -Wall
2019-04-29 21:26:43 -04:00
topjohnwu
e784212283
Update tools docs
2019-03-28 04:54:06 -04:00
topjohnwu
b7e2e972c7
Support boot_img_hdr_v2
2019-03-13 16:51:22 -04:00
topjohnwu
a57a94040e
Update some format magics
2019-03-08 00:47:15 -05:00
topjohnwu
1bde78d121
Rename patch_level -> os_patch_level
2019-03-07 21:59:03 -05:00
topjohnwu
bbd014ad1b
More saftey checks and improvements
2019-03-07 21:49:47 -05:00
topjohnwu
1287372f5a
Support patching header in magiskboot
2019-03-07 21:32:01 -05:00
topjohnwu
bbe4b69c8d
Fix LZ4FEncoder constructor
2019-03-07 19:58:59 -05:00
topjohnwu
7f08c06943
Remove unnecessary '--' from magiskboot actions
2019-03-07 18:07:23 -05:00
topjohnwu
0442d6d509
Only compress kernel and ramdisk if input not compressed
2019-03-07 07:24:20 -05:00
topjohnwu
e72c6685ed
Support A only System-as-root Devices
...
Most Chinese devices (and supposedly Galaxy S10) running Android Pie
is using system-as-root without A/B partition.
https://source.android.com/devices/bootloader/system-as-root#about-system-as-root
According to the docs above, these devices will have a ramdisk block
with size 0 in their boot images. Since magiskinit can run independently
on system-as-root devices, we simply just create an empty ramdisk with
magiskinit added as init.
Huge thanks to @vvb2060 for the heads up and original PR.
Close #980 , close #1102
2019-02-28 05:46:36 -05:00
topjohnwu
c9fa8118d1
Some code adjustments
2019-02-24 23:09:34 -05:00
topjohnwu
63b18246d8
Add compressed ramdisk support
2019-02-24 20:39:01 -05:00
topjohnwu
16ec37a226
Fix compression without outname
2019-02-24 17:45:08 -05:00
topjohnwu
c84023bdc2
Fix crashes when removing verity_key
2019-02-24 04:29:15 -05:00
topjohnwu
86f778c0aa
Group unsupported formats into the same code
2019-02-24 02:30:04 -05:00
topjohnwu
340bac7e42
Add decompression command
2019-02-23 16:53:51 -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
75939047d1
Fix bugs in compression
2019-02-23 04:51:13 -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
391783e268
Introduce mmap based CPIO class
2019-02-23 02:23:24 -05:00
topjohnwu
6f12c08204
Use ordered map to store CPIO entries
2019-02-22 22:53:20 -05:00
topjohnwu
cb8fe70734
Modernize CPIO code
2019-02-22 02:56:18 -05:00
topjohnwu
69d10b747a
Directly use FDT headers for detection
2019-02-21 05:24:05 -05:00
topjohnwu
da3394f34e
Move image parsing out of header searching
2019-02-21 05:08:38 -05:00
topjohnwu
b4c2a9f49f
More macro magic
2019-02-21 04:14:52 -05:00
topjohnwu
7cee77f57a
Some C++ magic to make code cleaner
2019-02-21 02:54:37 -05:00
topjohnwu
f28bd1972f
Adjust LZ4F block size
2019-02-21 00:52:47 -05:00
topjohnwu
0f92d1de1b
Fix bzip2 decompression
2019-02-20 20:53:54 -05:00
topjohnwu
e59c5c8780
Modernize compress and decompress
2019-02-20 20:49:26 -05:00
kirill9617
86d8026301
Update format.h
...
GZIP magic is \x1f\x8b\x08 not \x1f\x8b\x08\x00
2019-02-20 03:53:41 -05:00
topjohnwu
d67b827338
Rewrite compression with OOP
2019-02-20 02:10:06 -05:00
topjohnwu
ed027ec3ee
Refactor build flags
2019-02-12 05:17:02 -05:00
topjohnwu
71ecbb3af3
Clean/refactor includes
2019-02-10 03:57:51 -05:00
topjohnwu
9275975b2c
Re-organize functions
2019-01-26 06:00:23 -05:00
topjohnwu
3e4c12cf56
Migrate to STL
2019-01-19 23:59:37 -05:00
topjohnwu
b245931c79
Prevent duplicates when "." or ".." occurs
2018-12-09 22:12:04 -05:00
topjohnwu
1fae89cbb6
Add new cpio command: "exists", to magiskboot
2018-12-05 20:27:48 -05:00
topjohnwu
08cd5b81d1
Try to repair boot_hdr v1 entries
2018-12-04 03:30:43 -05:00
topjohnwu
83ae66daea
Change stock boot image SHA1 backup method
2018-11-15 00:33:20 -05:00
topjohnwu
3603b7c82b
Move cmdline and extra_cmdline to the same line
2018-11-08 20:57:30 -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
7c12bf7fa1
Modernize code base
2018-11-07 02:10:38 -05:00
topjohnwu
ca35a9681f
Minor code improvements
2018-11-06 05:02:30 -05:00
topjohnwu
3e2afd4b1d
Better debugging output
2018-11-01 01:16:15 -04:00
topjohnwu
2efc423cf8
Add missing flags and move debug logging logic to libutils
2018-10-28 04:25:31 -04:00
topjohnwu
6add02702b
Fix bug in MagiskBoot
2018-10-26 17:02:07 -04:00
topjohnwu
4ecbf8c12c
Remove recovery_dtbo when cleanup
2018-10-24 22:23:14 -04:00
topjohnwu
fc8a3c5fb4
Migrate MagiskBoot to C++
2018-10-24 22:23:14 -04:00