从Android boot.img与recovery.img的解包中了解其数据组成
来源:互联网 发布:中国的顶级域名是 编辑:程序博客网 时间:2024/06/04 18:54
从Android boot.img与recovery.img的解包中了解其数据
又到了忙碌的季节,一次要处理N多事情。最近需要从boot.img中取出ramdisk。不同的项目中kernel是一样的,ramdisk中的资源不一样,直接取ramdisk与新编译的kernel打包在一起,方便又快捷。下面就看看boot.img的结构。
在网上搜索了一遍,找到几个文章,说得都挺明白的了。boot.img由四部分组成:1 page的header,n page的kernel,m page的ramdisk,o page的second stage。几个部分是紧密接合在一起的,大小不够一个page的填充0补齐。还有完整的perl脚本来解包,真的是一应俱全。知其然还要知其所以然,下来就看看其数据究竟是怎么分布的,也当是留给自己的备注信息。
先是 1 page的头部信息:
page的单位是多少?一般文章都只说了是2K的文件头。这个是标准如此定死了还是有迹可寻呢?先别管这块,取2K的数据看一下吧。分析脚本所得,具体数据偏移如下:(这部分的信息是定义在android-src/system/core/mkbootimg/bootimg.h中,也可以从此文件获得。)
1)偏移0x00,8 byte,总是"ANDROID!",相当于magic number吧。
2)偏移0x08,8 byte,前4byte是kernel的大小,后4byte是kernel载入内存的地址。
3)偏移0x10,8 byte,结构同kernel,前4byte是ramdisk的大小,后4byte是载入地址。
4)偏移0x18,8 byte,结构同上,前4byte是second stage的大小,后4byte是载入地址。这部分一般都没有,大小是0。
5)偏移0x24,4 byte,页(page)大小,一般是0x800,也就是2K。
6)偏移0x30,16 byte,boot name,貌似没怎么用上。
7)偏移0x40,512 byte,cmdline内核参数,这个不多说了,懂什么是内核的都明白吧。
后续的kernel和ramdisk,都可以根据文件头中的信息算出地址和大小,直接分解出来即可。注意填充的0要去掉,可能对第二次打包产生影响。
又到了忙碌的季节,一次要处理N多事情。最近需要从boot.img中取出ramdisk。不同的项目中kernel是一样的,ramdisk中的资源不一样,直接取ramdisk与新编译的kernel打包在一起,方便又快捷。下面就看看boot.img的结构。
在网上搜索了一遍,找到几个文章,说得都挺明白的了。boot.img由四部分组成:1 page的header,n page的kernel,m page的ramdisk,o page的second stage。几个部分是紧密接合在一起的,大小不够一个page的填充0补齐。还有完整的perl脚本来解包,真的是一应俱全。知其然还要知其所以然,下来就看看其数据究竟是怎么分布的,也当是留给自己的备注信息。
先是 1 page的头部信息:
page的单位是多少?一般文章都只说了是2K的文件头。这个是标准如此定死了还是有迹可寻呢?先别管这块,取2K的数据看一下吧。分析脚本所得,具体数据偏移如下:(这部分的信息是定义在android-src/system/core/mkbootimg/bootimg.h中,也可以从此文件获得。)
1)偏移0x00,8 byte,总是"ANDROID!",相当于magic number吧。
2)偏移0x08,8 byte,前4byte是kernel的大小,后4byte是kernel载入内存的地址。
3)偏移0x10,8 byte,结构同kernel,前4byte是ramdisk的大小,后4byte是载入地址。
4)偏移0x18,8 byte,结构同上,前4byte是second stage的大小,后4byte是载入地址。这部分一般都没有,大小是0。
5)偏移0x24,4 byte,页(page)大小,一般是0x800,也就是2K。
6)偏移0x30,16 byte,boot name,貌似没怎么用上。
7)偏移0x40,512 byte,cmdline内核参数,这个不多说了,懂什么是内核的都明白吧。
后续的kernel和ramdisk,都可以根据文件头中的信息算出地址和大小,直接分解出来即可。注意填充的0要去掉,可能对第二次打包产生影响。
- 从Android boot.img与recovery.img的解包中了解其数据组成
- Android recovery.img与boot.img简单对比分析
- Android recovery.img与boot.img简单对比
- boot.img与recovery.img的解包
- boot.img与recovery.img的解包
- 【转载】boot.img与recovery.img的解包
- recovery.img与boot.img对比分析
- Android 采用fastboot刷system.img boot.img recovery.img
- android-ramdisk.img分析、recovery.img&boot.img执行过程
- Android 制作recovery.img boot.img,重新打包recovery.img boot.img
- android系统镜像:boot.img kernel.img ramdisk.img system.img userdata.img cache.img recovery.img
- android系统镜像:boot.img kernel.img ramdisk.img system.img userdata.img cache.img recovery.img
- android系统镜像:boot.img kernel.img ramdisk.img system.img userdata.img cache.img recovery.img
- MTK的android镜像 解包和打包( boot.img, system.img, userdata.img, or recovery.img)
- 从手机或其他设备中提取和解压boot.img与recovery.img
- recovery.img与boot.img简单对比分析
- recovery.img与boot.img简单对比分析
- recovery.img与boot.img简单对比分析
- 响应ListView 项按下。
- undefined reference to 'pthread_create'问题解决
- 统计一个整数的二进制中1的个数的三种解法
- Linux下Socket网络编程,文件传输,数据传输的C语言例子
- iOS开发 粗解UIDynamicAnimator
- 从Android boot.img与recovery.img的解包中了解其数据组成
- FreeBSD心得(一)
- IOS上AudioSession设置, 切换扬声器和听筒详解
- java vs c++
- FTPClient上传下载文件
- hibernate配置文件hibernate.cfg.xml的详细解释
- Ubuntu 12.04中文输入法的安装
- 计算机科学CS学科分类
- linux下 /etc/fstab和/etc/mtab是什么关系?