Инструмент для обратной инженерии изображений ROM Android.
Убедитесь, что у вас установлен JDK11+ (Java SE Development Kit) и Python3 (Python).
Linux / WSL: sudo apt install git device-tree-compiler lz4 xz-utils zlib1g-dev openjdk-17-jdk gcc g++ python3 python-is-python3 p7zip-full android-sdk-libsparse-utils erofs-utils
Mac: brew install lz4 xz dtc
Windows: Установите OpenSSL и компилятор деревьев устройств с помощью Chocolatey
choco install openssl dtc-msys2
Поместите ваш boot.img в текущую директорию, затем запустите задачу Gradle 'unpack':
cp <original_boot_image> boot.img
./gradlew unpack
Вы получите разглаженный ядро и файловую систему /root под ./build/unzip_boot:
build/unzip_boot/
├── boot.json (информация об изображении загрузки)
├── boot.avb.json (только AVB)
├── kernel
├── second (второе загрузочное программное обеспечение, если существует)
├── dtb (dtb, если существует)
├── dtbo (dtbo, если существует)
└── root (извлечённая initramfs)
Затем вы можете редактировать фактическое содержимое файлов, таких как rootfs или ядро. Теперь соберите boot.img снова
./gradlew pack
Вы получите собранное boot.img в $(CURDIR): boot.img.signed
Отлично, вы сделали это! Последний шаг — звезда этого репозитория :smile
| ---------------- | ------------------------------------------------------------ | ----------- | ------------------------ |
| загрузка | boot.img, init_boot.img, boot-debug.img, boot-test-harness.img | все | |
| загрузка производителя | vendor_boot.img, vendor_boot-debug.img, vendor_kernel_boot.img | все | |
| восстановление | recovery.img, recovery-two-step.img | все | |
| vbmeta | vbmeta.img, vbmeta_system.img и т.д. | все | |
| dtbo | dtbo.img | Linux & Mac| |
| dtb | *.dtb | Linux & Mac| |
| разряженные изображения | system.img, vendor.img, product.img и т.д. | Linux | |
| пакет OTA | payload.bin | все | Windows git-bash | Обратите внимание, что boot.img ДОЛЖЕН соответствовать процессу проверенного запуска AOSP, либо Подпись образа загрузки в VBoot OnClickListener 1.0, либо FOOTER_HASH метаданных AVB (также известен как AVB) в VBoot OnClickListener 2.0.## Совместимые устройства| Модель устройства | Производитель | Совместимость | Версия Android | Примечание |
|--------------------------------|--------------|----------------------|-------------------------|------------|
| Pixel 7 (panther) | Google | Да | 13 (TQ2A. 230505. 002)
(2023)| |
| ADT-3 (adt3) | Askey/Google | Да | 12 (spp2. 210219. 010) | Amlogic внутри,
Android TV |
| Pixel 3 (blueline) | Google | Да | 12 (spp2. 210219. 008,
(2021)| |
| Pixel 3 (blueline) | Google | Да | 11 (RP1A. 200720. 009,
(2020)| ещё . . . |
| Pixel 3 (blueline) | Google | Да | Q preview (qpp2. 190228. 023,
(2019)| ещё . . . |
| Redmi K30 4G (phoenix[n]) | Xiaomi | Да | 10 | Подтверждено @eebssk1 |
| TS10 | Topway | Да | 10 | Штатное радио, @mariodantas |
| Pixel XL (marlin) | HTC | Да | 9. 0. 0 (PPR2. 180905. 006,
(Сентябрь 2018)| ещё . . . |
| K3 (CPH1955) | Oppo | Да для recovery.img
Нет для boot.img | Pie | ещё |
| Z18 (NX606J) | ZTE | Да | 8. 1. 0 | ещё . . . |
| Nexus 9 (volantis/flounder) | HTC | Да с некоторыми хаками| 7. 1. 1 (N9F27M, Октябрь 2017)| Хаки|
| Nexus 5x (bullhead) | LG | Да | 6. 0. 0_r12 (MDA89E) | |
| Moto X (2013) T-Mobile | Motorola | Нет | | |
| X7 (PD1602_A_3. 12. 8) | Vivo | Нет | ? | Задача 35com/cfig/Android_boot_image_editor/issues/35) |
| Realme GT Neo 3 | Realme | N | 12 | Issue 105 |
rm *.img
cp <ваш_recovery_образ> recovery.img
./gradlew unpack
./gradlew pack
rm *.img
cp <ваш_vbmeta_образ> vbmeta.img
./gradlew unpack
./gradlew pack
./gradlew clear
Если ваш vbmeta.img содержит хэш boot.img, вам НУЖНО обновить образ vbmeta вместе.
rm *.img
cp <ваш_boot_образ> boot.img
cp <ваш_vbmeta_образ> vbmeta.img
./gradlew unpack
./gradlew pack
Ваши boot.img.signed и vbmeta.img.signed будут обновлены вместе, затем вы сможете загрузить их в устройство.
rm *.img
cp <ваш_vendor_boot_образ> vendor_boot.img
cp <ваш_vbmeta_образ> vbmeta.img
./gradlew unpack
./gradlew pack
./gradlew flash
Обратите внимание, что для использования 'gradle flash' ваша машина должна быть подключена к вашему устройству тестирования через adb, и вы уже выполнили 'adb root'.
cp <ваш_vendor_boot_образ> vendor_boot.img
cp <ваш_vbmeta_образ> vbmeta.img
./gradlew unpack
==> теперь вы можете редактировать build/unzip_boot/dtb.dts напрямую
./gradlew pack
На этапе распаковки dtb будет выгружен в файл build/unzip_boot/dtb
, а dts будет декомпилирован в build/unzip_boot/dtb.dts
. Вы можете редактировать dtb.dts
напрямую, и он будет скомпилирован в dtb во время этапа переупаковки.
Если вы просто хотите заменить dtb тем, который был скомпилирован вне этого инструмента, пожалуйста,
cp <ваш_vendor_boot_образ> vendor_boot.img
cp <ваш_vbmeta_образ> vbmeta.img
./gradlew unpack
rm build/unzip_boot/dtb.dts
cp <ваш_dtb> build/unzip_boot/dtb
./gradlew pack
Если у вас есть защищённое устройство и вы хотите вытянуть /proc/device-tree
touch fake.dtb
./gradlew pull
Этот инструмент скопирует dtc
на целевое устройство через adb
, а затем выгрузит файлы dtb и dts. В конечном итоге вы должны получить что-то вроде этого
+--------+------------------------------+
| Что | Где |
+--------+------------------------------+
| источник | /proc/device-tree |
+--------+------------------------------+
| DTB | panther.dtb |
+--------+------------------------------+
| DTS | build/unzip_boot/panther.dts |
+--------+------------------------------+
cp <ваш_системный_образ> system.img
./gradlew unpack
Вы получите system.img.unsparse
, это обычные данные файловой системы ext4.
Основная идея заключается в установке флага=2 в основном vbmeta.
rm *.img
cp <ваш_образ_vbmeta> vbmeta.img
./gradlew unpack
vim -u NONE -N build/unzip_boot/vbmeta.avb.json -c ":19s/0/2/g" -c ":wq"
./gradlew pack
Затем прошейте vbmeta.img.signed на ваше устройство.
gradle clear
, затем распакуйте boot.imgramdisk.size
на 1ramdisk.file
с "build/unzip_boot/ramdisk.img" на "build/unzip_boot/ramdisk.img.lz4"Использование:
gradle unpack
gradle unpack -Dpart=<part_name>
Пример:
gradle unpack -Dpart=boot
gradle unpack -Dpart=system
Примечание: "build/payload/" будет удалён перед каждым выполнением задачи "unpack"
AOSP уже имеет инструменты, такие как apexer, deapexer, sign_apex.py, которые должны удовлетворять потребности в работе с .apex и .capex. См. Задачу https://github.com/cfig/Android_boot_image_editor/issues/120
cp <ваш vendor_dlkm.img> vendor_dlkm.img
cp <ваши vbmeta_image> vbmeta.img
./gradlew unpack
# замените ваш .ko
./gradlew pack
Затем прошивайте vbmeta.img.signed
и vendor_dlkm.img.signed
на устройство.
Чтение layout boot Android boot.img и vendor_boot.img. Чтение layout misc misc.img
Список версий Android https://source.android.com/source/build-numbers.html
Android build-numbers https://source.android.com/setup/start/build-numbers
cpio & fs_config
https://android.googlesource.com/platform/system/core
https://www.kernel.org/doc/Documentation/early-userspace/buffer-format.txt
AVB
https://android.googlesource.com/platform/external/avb/
boot_signer
https://android.googlesource.com/platform/system/extras
mkbootimg
https://android.googlesource.com/platform/system/tools/mkbootimg/+/refs/heads/master/
определение заголовка boot
https://android.googlesource.com/platform/system/tools/mkbootimg/+/refs/heads/master/include/bootimg/bootimg.h
инструмент для извлечения информации о ядре
https://android.googlesource.com/platform/build/+/refs/heads/master/tools/extract_kernel.py
mkdtboimg
https://android.googlesource.com/platform/system/libufdt/
libsparse
https://android.googlesource.com/platform/system/core/+/refs/heads/master/libsparse/
Android Nexus/Pixel заводские образы
https://developers.google.cn/android/images
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )