在Android逆向工程和系统定制中,镜像文件的解包与打包是核心操作之一。以下是常用的工具及使用方法总结,涵盖 boot.img、system.img、payload.bin等常见镜像类型,并针对不同场景提供解决方案
一、boot.img与recovery.img解包/打包
工具:abootimg、unpackbootimg/mkbootimg
1. 解包流程
使用abootimg解包
abootimg -x boot.img #生成 bootimg.cfg、zImage、initrd.img
abootimg-unpack-initrd initrd.img #解压 ramdisk 目录
使用unpackbootimg解包
unpackbootimg -i boot.img -o ./out #输出内核文件、ramdisk.gz、配置参数等
2. 修改与打包
修改initrd或ramdisk内容后,重新生成镜像
find . | cpio --create --format='newc' | gzip -9 > ../myinitrd.img #压缩 ramdisk
abootimg --create new_boot.img -f bootimg.cfg -k zImage -r myinitrd.img #打包
使用mkbootimg打包
mkbootimg --kernel zImage --ramdisk ramdisk.gz --cmdline "参数" -o boot_new.img
二、system.img解包/打包
工具:simg2img、make_ext4fs、erofs-utils
1. 解包与挂载
转换sparse image为ext4格式
simg2img system.img system_ext4.img #转为可挂载的ext4镜像
mount -o loop system_ext4.img /mnt/system # 挂载修改文件
若为EROFS格式
fsck.erofs --extract=输出目录 system.img #解压 EROFS 镜像
2. 重新打包
使用make_ext4fs生成兼容镜像
make_ext4fs -s -T -1 -S file_contexts -l 分区大小 -a system system_new.img /mnt/system
注意事项
file_contexts 文件需与系统版本匹配,可通过 sefcontext工具转换file_contexts.bin。
分区大小需与原镜像一致,否则可能导致烧录失败。
三、payload.bin解包(OTA 更新包)
工具:payload-dumper、FastbootEnhance
1. 在线提取分区
使用payload-dumper直接解析OTA链接或本地文件
payload_dumper https://ota_url.zip --partitions boot --out 输出目录 #在线提取
payload_dumper payload.bin --partitions system #本地提取
Python 3.12 以上版本可优化性能,避免下载冗余数据。
2. 图形化工具
FastbootEnhance(仅 Windows)支持可视化提取和刷写分区镜像。
四、其他镜像工具与注意事项
1. 通用工具链
simg2img/img2simg:用于sparse与ext4格式互转。
erofs-utils:处理 EROFS 分区,支持解压和打包。
2. 常见问题
镜像大小限制:打包时需检查bootimg.cfg中的 bootsize或make_ext4fs的分区参数,避免溢出。
签名验证:修改后的镜像需重新签名才能通过设备校验,可使用AVB或Magisk修补。
3. 编译环境
推荐使用Ubuntu/WSL或Termux(需 Python 3.12)搭建交叉编译环境,适配工具链依赖
五、实战工具选择建议
快速修改boot/recovery:优先使用abootimg或 unpackbootimg,操作简单且兼容性强。
处理system分区:根据文件系统选择simg2img(ext4)或 erofs-utils(EROFS)。
提取OTA镜像:payload-dumper支持在线解析,适合无需下载完整固件的场景。
通过以上工具组合,可高效完成镜像的定制化修改与逆向分析。具体工具下载及环境配置可参考各工具的官方文档或博客教程。
推荐阅读
Ubuntu不正常关机后进入initramfs导致无法开机(解决方法)
Ubuntu20.04安装EasyConnect后兼容性问题无法启动的解决方法
Windows11使用WSL2下载Android12系统源码
Windows11上WSL之Ubuntu20.04搭建Android系统源码编译环境
加群添加微信号(cd-dlaq-sec)


原文始发于微信公众号(哆啦安全):Android镜像解包和打包工具及使用方法(三)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论