Android解包super.img查看其文件信息
在 Android 10 及更高版本上支持了"动态分区",所以 ROM 包中看不到了传统的 system.img 等镜像。在Android系统中,Super.img是一个重要的动态分区镜像文件,它包含了多个分区的镜像。为了方便管理和操作这些分区,我们需要使用一些专门的工具,其中就包括lpunpack、lpmake和lpdump。
lpunpack:Super.img的解包工具
lpunpack是一个用于解包Super.img文件的工具。通过它,我们可以将Super.img中的各个分区镜像提取出来,以便进行进一步的分析和处理。
lpmake:Super.img的打包工具
lpmake是一个用于将多个分区镜像打包生成Super.img文件的工具。通过它,我们可以将多个分区镜像合并成一个Super.img文件,方便管理和部署。
下面是将super.img解包的步骤:
1、首先进行sparse 格式转换
可参考(Android super.img 镜像解包-CSDN博客)
lpdump 只能解析非 sparse 格式的 image,如果是在 x86 PC 上运行 lpdum 进行解析,则需要提前使用 simg2img 将 Android 编译生成的 sparse 格式的 super.img 转换成 raw 格式
out_sys/host/linux-x86/bin/simg2img out_sys/target/product/mssi_64_cn/merged/super.img out_sys/super_raw.img
2、解压super_raw.img
将转化格式后的super_raw.img 解压出product_a.img system_a.img vendor_a.img等文件
out_sys/host/linux-x86/bin/lpunpack out_sys/super_raw.img
3、解压raw类型 system.img
可参考(解压system.img - 流浪_归家 - 博客园 (cnblogs.com))
利用file system.img 可知:
system_a.img: Linux rev 1.0 ext2 filesystem data, UUID=27414231-8d75-5827-8a17-5020c6eb0271 (extents) (large files) (huge files)
可以看到 ext2 filesystem data
raw可以直接挂载。
于是执行:
mkdir system
sudo mount system.img system
4、解压ext类型 system.img
Android O/Andorid P都是这种类型:
xxxx@xxxx:# file system.img
system.img: data
xxx#xxx ./simg2img system.img system.ext4.img
xxx#xxx file system.ext4.img
system.ext4.img: Linux rev 1.0 ext4 filesystem data, UUID=6f8511d5-cc14-5467-8fc3-fea8427a7d8f, volume name "system" (extents) (64bit) (large files) (huge files)
xxx#xxx mount system.ext4.img system/
通过simg2img脚本,转成raw格式即可。
simg2img脚本在工程的out/host/linux-x86/bin/下,out/host/linux-x86/lib64/libc++.so这个库是必须的。