解析安卓镜像包和提取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

其他

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/915949.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 热题100(八)【二叉树】(3)

目录 8.11二叉树展开为链表(中等) 8.12从前序与中序遍历序列构造二叉树(中等) 8.13路径总和III(中等) 8.14二叉树的最近公共祖先(中等) 8.15二叉树中的最大路径和(困…

FPGA实现PCIE3.0视频采集转SDI输出,基于XDMA+GS2971架构,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案本博已有的 SDI 编解码方案本博客方案的PCIE2.0版本 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图电脑端视频QT上位机XDMA配置及使用XDMA中断模块FDMA图像缓存Native视频时序生成RGB转BT1120SDI转HDM…

纽约大学:指导LLM提出澄清性问题

📖标题:Modeling Future Conversation Turns to Teach LLMs to Ask Clarifying Questions 🌐来源:arXiv, 2410.13788 🌟摘要 🔸大型语言模型(LLM)必须经常对高度模糊的用户请求做出…

STM32F1学习——I2C通信

一、I2C通信一带多 在学习通信的时候,我们常会听到串口通信。但串口通信只限定两个设备之间,如果有多个设备,通信的两个设备就要连接上,接线复杂。所以有了总线式通信,在一条总线上可以连接多个设备,这些根…

当你想要conda安装遇到UnavailableInvalidChannel: HTTP 404 NOT FOUND for channel的问题

想要装个虚拟环境,结果遇到404。 看了第一个GitHub帖子中的一句话 UnavailableInvalidChannel: The channel is not accessible or is invalid. Navigator not launching. Issue #9473 conda/conda GitHub 想说那我就把这个not found的channel删掉吧&#xff…

Jmeter中的前置处理器(一)

前置处理器 1--JSR223 PreProcessor 功能特点 自定义数据处理:使用脚本语言处理请求数据,实现高度定制化的数据处理和生成。动态数据生成:在请求发送前生成动态数据,如随机数、时间戳等。变量设置:设置和修改 JMeter…

2023年高校大数据挑战赛A题中文文本纠错求解全过程文档及程序

2023年高校大数据挑战赛 A题 中文文本纠错 原题再现: 中文文本纠错的任务主要是针对中文文本中出现的错误进行检测和纠正,属于人工智能自然语言处理的研究子方向。中文文本纠错通常使用的场景有政务公文、裁判文书、新闻出版等,中文文本纠错…

使用CNN进行验证码识别:深度学习与图像预处理教程

验证码(CAPTCHA)广泛用于区分人类和自动化程序(如机器人),通常由扭曲的字母、数字或符号组成。为了实现验证码的自动识别,深度学习尤其是卷积神经网络(CNN)非常有效。本文将带你一起…

基于 Python Django 的二手房间可视化系统分析

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

探索 Sentinel 服务容错

Sentinel 是阿里巴巴开源的一款高可用防护组件,主要用于分布式系统中的流量控制、熔断降级和系统负载保护。它在 Java 微服务架构中扮演着重要的角色,帮助开发者确保系统的稳定性和可靠性。 以下是 Sentinel 的一些关键特性: 流量控制(Flow Control):通过对请求进行限流…

DBeaver 连接 OceanBase Oracle 租户

DBeaver 是一款通用的数据库工具软件,支持任何具有JDBC驱动程序的数据库。DBeaver 需要 Java 运行环境的支持。截稿时 DBeaver 24.0.0 版本默认提供的 OceanBase 驱动是连接 MySQL 的,想连接 Oracle 租户需要新建一个驱动器使用。 下载数据库驱动包 1、…

Dubbo 3.x源码(24)—Dubbo服务引用源码(7)接口级服务发现订阅refreshInterfaceInvoker

基于Dubbo 3.1,详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了Dubbo3.1版本的MigrationRuleHandler这个处理器,它用于通过动态更改规则来控制迁移行为。MigrationRuleListener的onrefer方法是Dubbo2.x 接口级服务发现与Dubbo3.x应用级服务发现…

企业如何提高招聘能力?

企业如何提高招聘能力? 许多企业在进行招聘工作时,常常会遇到各种问题和挑战。尽管付出了大量的时间和精力,但结果却并不总是如人意。例如,企业可能会经历一次又一次的面试,却仍然找不到一个能够适应岗位要求的合适人…

JAVA:探索 EasyExcel 的技术指南

1、简述 在 Java 开发中,Excel 文件的读写操作是一项常见的需求。阿里巴巴开源的 EasyExcel 提供了一种高效、简洁的解决方案,特别是在处理大规模数据时表现尤为突出。本文将详细介绍 EasyExcel 的优缺点、应用场景,并通过实例展示其基本用法…

AI制作ppt

1,kimi: 实际上也是AiPPT.cn这个网站(但是有实际次数限制) 2,其余专业AI ppt生成网站: (1)gamma:https://gamma.app/ 大概能制作7~10页左右 free的ppt,其余要…

穿越数据迷宫:C++哈希表的奇幻旅程

文章目录 前言📔一、unordered系列关联式容器📕1.1 unordered 容器概述📕1.2 哈希表在 unordered 容器中的实现原理📕1.3 unordered 容器的特点 📔二、unordered_set 和 unordered_map 的基本操作📕2.1 un…

数据结构 -二叉搜索树

一.什么是二叉搜索树 树插入删除方便比线性数组 二.二叉搜索树的查找操作 尾递归可以用循环递归 三.二叉树的插入操作 35要挂在33上面必须记住33的位置 解决方法,要求递归函数返回一个 结点插到33的右子树 四.二叉搜索树的删除 要是删除的是叶子节点之间删除 只有一…

计算机三级 数据库技术

第一章 数据库应用系统开发方法 1.1 数据库应用系统生命周期 软件工程:软件工程的思想,即用工程的概念、原理、技术和方法对软件生产、开发的全过程进行跟踪和管理 软件开发方法:瀑布模型、快速原型模型、螺旋模型 DBAS生命周期模型 1.2 规划与分析 系统规划与定…

使用 AMD GPU 推理 Mixtral 8x22B

Inferencing with Mixtral 8x22B on AMD GPUs — ROCm Blogs 2024年5月1日,由 Clint Greene撰写。 简介 自从Mistral AI’s AI发布了Mixtral 8x7B以来,专家混合(MoE)在AI社区重新获得了关注。受此发展启发,多个AI公…

前后端、网关、协议方面补充

这里写目录标题 前后端接口文档简介前后端视角对于前端对于后端代码注册路由路由处理函数 关于httpGET/POST底层网络关于前端的获取 路由器网关路由器的IP简介公网IP(WAN IP)私网IP(LAN IP)无线网络IP(WIFI IP)查询路由器私网IP路由器公网IP LAN口与WIFI简介基本原理 手动配置电…