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

如何确定arm固件的加载地址

对于m系列,向量表默认在地址0,前4个字节是栈末尾地址也是初始栈指针,然后0x4-0x8这4个字节是reset handler,跳转过去会执行main函数的起点,是绝对地址。然后修改VTOR寄存器可以重定位向量表。
image
所以bootrom默认在地址0开始

对于arm64,就复杂一些
image
首先reset handler不是向量表一部分了而且每个条目最多0x80字节,向量表的基地址写在vbar_eln的寄存器里面
image
image
然后异常表第一项是同步异常,一般是死循环。

所以说我们可以来看unisoc的bootrom,首先我们先用0作为加载地址载入ida

然后看代码
image
bootrom一开始把vbar_el3设置成0x100800,是向量表的开始
所以找第一个死循环的位置
在0x800偏移image
所以实际bootrom加载地址是0x100800-0x800=0x100000

那么可以看到确实是0x80字节一个条目,多出来就用nop

然后还有一些其他方法,比如说armv7的加载地址怎么确定:
armv7的向量表也是4个字节一个条目,开头是reset handler,所以说实际上找到程序开始的函数,然后就可以算了,而且很多情况下向量表就在0地址,更好找
image
image
image

再就是通过switch,跳转表里面的地址是真实地址,然后真实地址-跳转表偏移量就是固件加载地址

image

再就是找一些magic number,然后看看用到magic number的函数(这个是指的直接用不是绝对地址引用),然后猜测里面的printf的字符串(这个一般是绝对地址),然后找到ida搜索这个字符串,找到偏移量

还有一种指令定位法,比如LDR R0,=0xxxxx,是绝对地址,然后这可能是引用固件中某个区域,我们认为真实地址和偏移量的后三位(可能更多)一般是一样的因为加载地址一般都是比较整的,所以直接搜后三位地址在一般是字符串中出现的偏移量,然后就可以计算加载地址了。
image

最后还有一个开源工具https://github.com/sgayou/rbasefind

没用过估计不好用

http://www.rkmt.cn/news/83677.html

相关文章:

  • 2025年国内靠谱的门窗源头厂家推荐,全屋门窗/环保门窗/复古门窗/极简门窗/欧式门窗/智能门窗/门窗直销厂家找哪家 - 品牌推荐师
  • 基于协同过滤推荐算法的求职招聘推荐系统u1ydn3f4(程序、源码、数据库、调试部署优秀的方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
  • 12.11笔记
  • 中国人工智能学会推荐国际学术会议和国际/国内期刊目录
  • 蓝桥杯-Python-题目整理2
  • 喵喵喵 XI
  • 深度学习方法在语音识别中的全面解析
  • 详解Adobe Experience Manager存储型XSS漏洞CVE-2025-64829
  • 中国自动化学会推荐学术会议、科技期刊目录(2024)发布
  • 国内直连?API源头供应?深度实测GrsAI的Sora2接口0.08/条视频它真的靠谱吗?
  • 在 Steam Deck 上開啓用戶級別的 SMB
  • 如何在 Steam Deck 上備份截圖
  • 【AI】前置篇 Ai Agent的全貌概览
  • 考陪诊师为什么选北京守嘉陪诊报名? - 品牌排行榜单
  • 【torch】torch.cat和直接相加的区别
  • 《综合项目实战-局域网内的沟通软件》
  • Java基础补缺2
  • Ai元人文:对岐金兰观察的深度回应——价值协商与数值优化的范式调和
  • 12/11
  • 深入解析:[特殊字符] 在 Windows 上设置 SQLite
  • 阿里云国内服务器安装 node/npm/nvm 环境
  • LeeCode 热题100--移动零
  • 可溶性蛋白表达指南:原理、系统与策略解析
  • 函数模板与类模板——泛型编程
  • 03-事务高频面试总结 - 实践
  • ROS2 常用工具包总览
  • RustFS MCP Server:构建下一代AI模型存储基础设施的实践指南
  • 北京有哪些好的陪诊品牌 - 品牌排行榜单
  • 2025.12.11博客
  • 61