发新帖

Android 5.0 system.new.dat解包工具及方法[Windows\Linux]

[复制链接]
28349 8
感谢以下人员:
sdat2img 二进制文件最初作者Howellzhu
python脚本代码作者luxi78
Windows x86/x64 作者xpirt
sdat2img 源码地址
以下文字引用作者Howellzhu
从Android 5.0开始,即使是update.zip包,也是仿照增量包的方式进行打包了。使用make otapackage得到一个zip文件,查看内容:
boot.img
file_contexts
META-INF
system.new.dat
system.patch.dat
system.transfer.list

显然system.img不再提供,而是提供了三个文件,利用这三个文件的脚本在/META-INF/com/google/android/updater-script文件中:
  1. block_image_update("/dev/block/platform/msm_sdcc.1/by-name/system", package_extract_file("system.transfer.list"), "system.new.dat", "system.patch.dat");
复制代码
而该函数定义在:
bootable/recovery/updater/blockimg.c:BlockImageUpdateFn()中。

代码中有一段注释用于描述transfer list文件的内容,它支持如下命令:
1) 文件的第一行是版本号,当前是1;
2) 文件的第二行是总共需要写入的block数量(后面new命令的range加起来应该等于该值);
3) erase [rangeset]: 将目标分区的range清除;
4) zero [rangeset]:将目标分区的range使用0填充;
5) new [rangeset]: 将目标分区的range使用new_data文件填充;

比如如下的一个system.transfer.list文件:
1
90270
erase 2,0,262144
new 28,0,32767,32768,32770,32833,32835,33347,65535,65536,65538,98304,98306,98369,98371,98883,124176,131072,131074,163840,163842,163905,163907,196608,196610,229376,229378,229441,229443
第一行1表示该transfer文件的版本为1;
第二行表示new命令总共要写入90270个block;
第三行表示删除的range是从0到262144,2表示range的区间描述数目是2个数值,即0和262144;
第四行表示从system.new.dat文件中读取block,然后依次写入如下14个区间:[0, 32767), [32768, 32770) ...这个区间的block总数刚好是前面描述的90270个。

这样的做法实际上是一个稀疏数组的区间描述,用以降低update.zip文件的大小和写入的数据量。

Linux 使用方法:(sdat2img 文件暂时只支持 Linux-64位系统)
sdat2img <transfer_list> <system_new_file> <system_img>

解包之后可以直接在 Linux 进行挂载
sudo mount -t ext4 -o loop,ro,noexec,noload system_img system_folder




Windows 使用方法:
sdat2img <transfer_list> <system_new_file> <system_img>

解包完成后可以直接使用ext2explore.exe打开进行提取(ext2explore.exe在厨房里面有或自己搜索下载)


工具下载地址:
Windows x86/x64:http://pan.baidu.com/s/1hqqvIhm

Linux 64:链接: http://pan.baidu.com/s/1pJyUJvd 密码: 3zyp

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

举报 使用道具

回复

精彩评论8

听鬼哥说故事    发表于 2014-12-26 17:22:05 | 显示全部楼层
必须顶~~~~~~~~~

举报 使用道具

回复
JackIO    发表于 2014-12-26 17:50:21 | 显示全部楼层
这个必须顶一下。

举报 使用道具

回复 支持 反对
单翅的天使ylj    发表于 2014-12-26 20:44:53 | 显示全部楼层
好东西{:2_26:}

举报 使用道具

回复
sndncel    发表于 2014-12-26 20:56:57 | 显示全部楼层
谢谢分享呀。支持一下呀。

举报 使用道具

回复 支持 反对
沐小悠    发表于 2015-7-30 13:10:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

举报 使用道具

回复 支持 反对
我是大条づ    发表于 2015-8-2 11:21:43 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

举报 使用道具

回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表