• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Android_boot_image_editor: 修改Android boot.img/vbmeta.img最好的工具, 有需求/疑 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

Android_boot_image_editor

开源软件地址:

https://gitee.com/cfig/Android_boot_image_editor

开源软件介绍:

Android_boot_image_editor

CILicense

A tool for reverse engineering Android ROM images.

Getting Started

install required packages

Linux: sudo apt install git device-tree-compiler lz4 xz-utils zlib1g-dev openjdk-11-jdk gcc g++ python3 python-is-python3

Mac: brew install lz4 xz dtc

Mac: Make sure you have JDK9+ properly installed.

Windows Subsystem for Linux(WSL): sudo apt install git device-tree-compiler lz4 xz-utils zlib1g-dev openjdk-11-jdk gcc g++ python

Windows: Make sure you have python3, JDK9+ and openssl properly installed.An easy way is to install Anaconda and Oracle JDK 11, then run the program under anaconda PowerShell.Or install them with chocolate: choco install openssl dtc-msys2

Parsing and packing

Put your boot.img to current directory, then start gradle 'unpack' task:

cp <original_boot_image> boot.img./gradlew unpack

Your get the flattened kernel and /root filesystem under ./build/unzip_boot:

build/unzip_boot/├── boot.json     (boot image info)├── boot.avb.json (AVB only)├── kernel├── second        (2nd bootloader, if exists)├── dtb           (dtb, if exists)├── dtbo          (dtbo, if exists)└── root          (extracted initramfs)

Then you can edit the actual file contents, like rootfs or kernel.Now, pack the boot.img again

./gradlew pack

You get the repacked boot.img at $(CURDIR):

boot.img.signed

Well done you did it! The last step is to star this repo :smile

live demo

Supported ROM image types

Image Typefile namesplatformsnote
boot imagesboot.img, vendor_boot.imgall
recovery imagesrecovery.img, recovery-two-step.imgall
vbmeta imagesvbmeta.img, vbmeta_system.img etc.all
dtbo imagesdtbo.imglinux & mac
sparse imagessystem.img, vendor.img, product.img etc.linux & macneed hacking mode*
OTA payloadpayload.binlinux & mac

Please note that the boot.img MUST follows AOSP verified boot flow, either Boot image signature in VBoot 1.0 or AVB HASH footer (a.k.a. AVB) in VBoot 2.0.

hacking mode*:

Open build.gradle.kts, Line #8, change

val bHackingMode = false

to

val bHackingMode = true

This will enable c++ modules, which is necessary for working with sparse images.

compatible devices

Device ModelManufacturerCompatibleAndroid VersionNote
ADT-3 (adt3)Askey/GoogleY12 (spp2.210219.010)amlogic inside,
Android TV
Pixel 3 (blueline)GoogleY12 (spp2.210219.008,
2021)
Pixel 3 (blueline)GoogleY11 (RP1A.200720.009,
2020)
more ...
Pixel 3 (blueline)GoogleYQ preview (qpp2.190228.023,
2019)
more ...
Redmi K30 4G (phoenix[n])XiaoMiY10verified by @eebssk1
TS10TopwayY10car headunit, @mariodantas
Pixel XL (marlin)HTCY9.0.0 (PPR2.180905.006,
Sep 2018)
more ...
K3 (CPH1955)OPPOY for recovery.img
N for boot.img
Piemore
Z18 (NX606J)ZTEY8.1.0more...
Nexus 9 (volantis/flounder)HTCY(with some tricks)7.1.1 (N9F27M, Oct 2017)tricks
Nexus 5x (bullhead)LGY6.0.0_r12 (MDA89E)
Moto X (2013) T-MobileMotorolaN
X7 (PD1602_A_3.12.8)VIVON?Issue 35

more examples

working with recovery.img

Please remember to clean the work directory first.

rm *.imgcp <your_recovery_image> recovery.img./gradlew unpack./gradlew pack
working with vbmeta.img
rm *.imgcp <your_vbmeta_image> vbmeta.img./gradlew unpack./gradlew pack
working with boot.img and vbmeta.img

If your vbmeta.img contains hash of boot.img, you MUST update vbmeta image together.

rm *.imgcp <your_boot_image> boot.imgcp <your_vbmeta_image> vbmeta.img./gradlew unpack./gradlew pack

Your boot.img.signed and vbmeta.img.signd will be updated together, then you can flash them to your device.

working with vendor_boot.img + vbmeta.img (Pixel 5 etc.)Most devices include hash descriptor of vendor_boot.img in vbmeta.img, so if you need to modify vendor_boot.img, you need to update vbmeta.img together.
rm *.imgcp <your_vendor_boot_image> vendor_boot.imgcp <your_vbmeta_image> vbmeta.img./gradlew unpack./gradlew pack./gradlew flash

Please note that to use 'gradle flash', your host machine must be connectted to your DUT with adb, and you already 'adb root'.

working with system.img

First enable hacking mode by setting bHackingMode = true in file build.gradle.kts, then

cp <your_system_image> system.img./gradlew unpack

You get system.img.unsparse, that's a plain ext4 filesystem data.

How to disable AVB verification

The idea is to set flag=2 in main vbmeta.

rm *.imgcp <your_vbmeta_image> vbmeta.img./gradlew unpackvim -u NONE -N build/unzip_boot/vbmeta.avb.json  -c ":19s/0/2/g" -c ":wq"./gradlew pack

Then flash vbmeta.img.signed to your device.

boot.img layout

Read layout of Android boot.img and vendor_boot.img.

References and Acknowledgement

more ...

Android version list 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 header definition
https://android.googlesource.com/platform/system/tools/mkbootimg/+/refs/heads/master/include/bootimg/bootimg.h
kernel info extractor
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/Pixle factory images
https://developers.google.cn/android/images

This project is developed with products by Jetbrains.

drawing

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap