0x01 介绍
Moto 默认的 fastboot 线刷包 system 镜像采用的是 sparse 分段文件,无法直接挂载提取文件。只能先转换一下。
0x02 编译 simg2img 工具
这个一般是在编译 android 源码过程中使用到的工具,为了方便,在这里使用 github 单独的源码:
1. 随便新建一个文件夹,存放工具。
git clone https://github.com/anestisb/android-simg2img
安装依赖:
apt install build-essential make zlib1g-dev
2. 编译:
cd 到源码目录
make
0x03 合并 system.img_sparsechunk
1. 将所有的 system.img_sparsechunk 分段文件放到 源码目录下。
2. 直接输入如下命令:
./simg2img system.img_sparsechunk.* system.img.raw.tmp offset=$(LANG=C grep -aobP -m1 '\x53\xEF' system.img.raw.tmp | head -1 | awk '{print $1 - 1080}') dd if=system.img.raw.tmp of=system.img.raw ibs=$offset skip=1
Moto Z 2016 以后的设备,您可能还需要去除底部的 MMI PROPERTY:
感谢 @erfanoabdi 的发现
注意,如果您的设备不是 Moto Z 2016,请不要执行此命令。
head -c $(( 4*1024*-1 )) system.img.raw > system.ext4.img
3. 新建挂载目录并挂载:
mkdir /mnt/system
mount system.img.raw /mnt/system/
这样就可以提取文件了。=*=
GRIFFIN_RETCN_OCC27.102-23_cid11_subsidy-DEFAULT_regulatory-DEFAULT_CFC.xml.zip,这个包有11个分段文件,按上述方法挂载会报错can’t read superblock on /dev/loop7.,请问有新的解决方法吗
./simg2img system.img_sparsechunk.* system.img.raw.tmp
这一步就是合并trunk的。
是的,按照上面的步骤先合并,然后两次文件转换,最后都不能挂载成功,另外不是很理解,dd 和 head这两次转换的具体含义
dd 是去签名,head 是去 MMI PROPERTY。
我如何修改语言文件,app安装后还是显示的英文名字(Amaze),怎么破?语言文件设置正确的啊。