解析安卓镜像包和提取DTB文件的操作日志
概述
想查看一下安卓的镜像包里都存了什么内容
步骤
-
使用
RKDevTool_v3.15
对RK3528_DC_HK1_RBOX_K8_Multi_WIFI_13_20230915.2153.img
解包- 路径: 高级(
Advancing
) > 固件(firmware
) > 解包(unpacking
) - 得到
\Output\Android\Image
- boot.img
- uboot.img
- super.img
- 路径: 高级(
-
处理boot.img
HxD
打开, 文件格式魔数的ASCII
文本是:ANDROID
- 在
Linux
下(或git-bash
窗口下)使用boot-img-split.tar.gz
中的split_bootimg.pl
对文件进行分割 - 解析结果
- boot.img-kernel
- 通过
file boot.img-kernel
输出Linux kernel ARM64 boot executable Image, little-endian, 4K pages
- 通过
- boot.img-ramdisk.gz
- 解压缩后,再解压得到一个目录
init
二进制程序;fstab.rk30board
磁盘挂载信息;build.prop
系统编译参数;
- boot.img-second.gz
dtb
文件和BMP
图片文件dtb
搜索D0 0D FE ED,
后4个字节是长度bmp
搜索42 4D
, 后4个字节是长度 : 几个电池状态图标和HK1的开机logo
- boot.img-kernel
- boot.img-second.gz
-
HxD
打开, 文件格式魔数的ASCII
文本是:RSCE
, 解压软件无法解压 -
查看已有的
dtb
文件(用adb
从运行的系统中提取的), 确定文件格式魔数为D0 0D FE ED
, 其后4个字节为大端格式的文件长度的16进制(和window
文件属性的字节数一致) -
文件长度是包含魔数和文件长度这8个字节的
-
选中表示文件长度的4个字节, 在右侧底部选择大端, 上面int32显示对应的10进制
-
下图示例为后面补的
-
选中魔数, 点击菜单>编辑>选择范围, 选择长度/十六进制, 填入表示文件长度的4个字节的值(无特殊处理,按顺序填), 填完后点击十进制, 查看是否一致
-
补充图片
-
点击确定后选择, 右键复制 , 菜单>新建, 粘贴, 保存为新文件, 取名
HK1_RBOX_K8_IMG.dtb
-
在linux(ubuntu,自带dtc)下对文件反编译
dtc -I dtb -O dts -o HK1_RBOX_K8_IMG.dts HK1_RBOX_K8_IMG.dtb # 有警告信息
-
-
处理 uboot.img
HxD
打开, 文件格式魔数是:D0 0D FE ED
, 提取文件- 在linux(ubuntu,自带dtc)下对文件反编译
dtc -I dtb -O dts -o uboot.img.dts uboot.img.dtb # 居然无警告信息
- 没啥内容, 应该是arm平台通用的用于加载下一级boot.img的镜像
- 在linux下通过
dumpimage -l uboot.img
可以查看格式信息, 但是无法提取DTBdumpimage -i fit-image.itb -T firmware -o u-boot.itb u_boot
-
处理super.img
- 下载
cygwin1.dll lpunpack.exe simg2img.exe
cygwin1.dll
放在和exe同级目录- 先转换镜像格式后执行解压
simg2img.exe super.img super.raw.img
lpunpack.exe super.raw.img
- 后续用diskgenus挂载查看
- 下载
工具
cygwin1.dll lpunpack.exe simg2img.exe
https://github.com/thka2016/lpunpack_and_lpmake_cmake/releasesHxD
https://github.com/ophub/kernel/releases > tools > HxDdtc
Ubuntu系统自带boot-img-split.tar.gz
http://dl.linux-sunxi.org/users/arete74/tools.tar.gzRKDevTool_v3.15
(应该是通用的) https://github.com/ophub/kernel/releases > tools > Radxa_rock5b_RKDevTool_Release_v2.96__DriverAssitant_v5.1.1.tar.gz- diskgenus
其他
- 文件格式魔数: 部分文件的开头几个字节是固定的