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

解析安卓镜像包和提取DTB文件的操作日志

概述

想查看一下安卓的镜像包里都存了什么内容

步骤

  • 使用RKDevTool_v3.15RK3528_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-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 可以查看格式信息, 但是无法提取DTB
      • dumpimage -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/releases
  • HxD https://github.com/ophub/kernel/releases > tools > HxD
  • dtc Ubuntu系统自带
  • boot-img-split.tar.gz http://dl.linux-sunxi.org/users/arete74/tools.tar.gz
  • RKDevTool_v3.15 (应该是通用的) https://github.com/ophub/kernel/releases > tools > Radxa_rock5b_RKDevTool_Release_v2.96__DriverAssitant_v5.1.1.tar.gz
  • diskgenus

其他

  • 文件格式魔数: 部分文件的开头几个字节是固定的

http://www.mrgr.cn/news/75114.html

相关文章:

  • ESLint 使用教程(四):ESLint 有哪些执行时机?
  • 新日撸java三百行` 新手小白java学习记录 `Day1
  • 河南省测绘资质管理制度解析
  • JAVA学习日记(十五) 数据结构
  • LLMs之Code:Github Spark的简介、安装和使用方法、案例应用之详细攻略
  • 高性能Web网关:OpenResty 基础讲解
  • 探索AutoDL与CodeWithGPU:深度学习之旅的新起点
  • 时序论文20|ICLR20 可解释时间序列预测N-BEATS
  • 【算法一周目】双指针(2)
  • JavaScript总结
  • Path.Combine容易被忽略的细节
  • DAPP迎启动契机,Scroll 生态全面启动为 Pencils Protocol 赋能
  • C++函数的返回值在内存中的传递过程
  • 第4章-计划 4.4 范围管理
  • Python基础学习-07不可重复的set集合
  • 常用的生物医药专利查询数据库及网站(很全!)
  • Jetpack 之 Ink API初探
  • qt QQuickView详解
  • 《DPT: Deformable Patch-based Transformer for Visual Recognition》论文翻译
  • Go常见框架对比
  • AI驱动的电商创新:提升销售效率与用户体验
  • session 的工作原理
  • SpringBoot(十)SpringBoot使用QQ邮箱stmp发送邮件
  • 【计算机网络】UDP网络程序
  • 大数据新视界 -- 大数据大厂之 Impala 存储格式转换:从原理到实践,开启大数据性能优化星际之旅(下)(20/30)
  • 一个免费的Java 应用内存问题分析工具,用于 OutOfMemoryErrors 和堆大小调整等问题(带私活源码)