解析安卓镜像包和提取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.imglpunpack.exe super.raw.img
- 后续用diskgenus挂载查看
- 下载
工具
cygwin1.dll lpunpack.exe simg2img.exehttps://github.com/thka2016/lpunpack_and_lpmake_cmake/releasesHxDhttps://github.com/ophub/kernel/releases > tools > HxDdtcUbuntu系统自带boot-img-split.tar.gzhttp://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
其他
- 文件格式魔数: 部分文件的开头几个字节是固定的
