当前位置: 首页 > article >正文

android dat怎么打开方式,Android 5.0 system.new.dat解包工具及方法

从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文件中:

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的一个解析transfer文件然后将system.new.dat解包为ext4格式system.img的二进制执行文件。

或者搜索sdat2img,即sparse data file to image file.

从5.0开始,otapackage的zip包中的system.new.dat文件实际上是由system.transfer.list描述的一个稀疏数组。这里提供一个可以用于将该稀疏数组unpack成为真正ext4的image文件的程序sdat2img。

用法:sdat2img  

前两个参数分别是trans list文件和输入的system.new.dat文件,最后一个是输出的system.img文件名,可以直接用于ext4的mount。

密码: bne0

感谢原作者无私分享:howellzhu、pwelyn-越狱

c12bf28c4e03379d950c1097062c9d5d.png

bfb3f969071cfce1c9c28218d13bc03c.png

30266622c091319f9544e3337f5c822f.png

http://www.lryc.cn/news/2412885.html

相关文章:

  • Teleport Pro使用教程
  • 用R抓取拉手网深圳地区的美食数据--增加商店地址信息
  • Matlab中句柄类和值类的比较
  • flash builder 4 编译器参数
  • [转]Windows Shell 编程 第十三章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7988004】...
  • Android4.4/CM11编译常见错误及解决方法!
  • steam服务器脱机怎么办/与Steam服务器通讯时发生错误解决方法
  • 代码的隐蔽威胁:泄露秘密和个人身份信息
  • 腾讯的web QQ接口
  • suse10 linux u盘安装,SUSE Linux Enterprise Server 11 SP3安装教程详解
  • Fedora 12 的两个问题的解决
  • 全志R128 SDK HAL 模块开发指南——Flash Controller
  • 51单片机温度检测及LCD1602显示
  • LGG7刷入第三方ROM,安卓11
  • 机器人三大定律的发展和演进概述
  • asp毕业设计——基于asp+access的网页设计辅导系统设计与实现(毕业论文+程序源码)——网页设计辅导系统
  • python输出指定目录下所有文件(全路径),并核对md5码
  • 手指检测心跳设计——传感器制作篇
  • QQ盗号软件后门分析与反击
  • SecureCRT的使用教程( 过程非常详细!!值得查看)
  • Ubuntu下载-最新版本Ubuntu Linux 7.10下载(转)
  • OLT操作命令集及排障
  • Joomla安装图文教程
  • 联想A820T 修改MAC
  • 背包问题九讲笔记_01背包
  • 谷歌地图离线数据包_除了谷歌地图,还有哪些导航软件可以选择,这6个地图值得一试...
  • JavaScript 深入学习教程
  • 破解教程 第二课 脱壳
  • 【Unity3D插件】“我敢说,这是你见过最多的插件合集”Unity插件分享不断更新中。。。
  • 5分钟替换天空 - Affinity Photo 教程