Arm 定制 u-boot 倒车

逆向工程 艾达 拆卸 固件 手臂
2021-06-21 22:37:19

我正在尝试反转在运行时为内核实现加密的自定义 u-boot(静止内核也在闪存中加密)。我大概可以要求IoT供应商提供u-boot的修改代码,但我想从这个经验中学到一些东西。

我收集的一些信息:

  • SOC 数据表(带内存布局)
  • Ram 从 0x8000_0000 (2 GB) 开始
  • BOOTROM 在 0x0400_0000 (64K)
  • 0x0401_0000 处的 BOOTRAM (64K)
  • 从 0x0000_0000 到 0x03FF_FFFF (64 Mb) 的可重映射区域
  • 字符串U型BOOT.BIN文件返回:bootcmd=kload 0x82000000; bootm 0x82000000
  • CPU 是 Arm Cortex A7(SOC 也有 A17,但不是“默认”的)

我在 IDA 中加载二进制文件的步骤: 第 1 步 IDA

IDA 向我询问了反汇编内存组织;我尝试了几件事但没有成功。我认为这是我搞砸了一些东西的部分,后来当我尝试重建中断向量表以稍后开始定义函数时,我可以找到正确的地址。

第 2 步 IDA

在这种情况下,根据我掌握的信息,我应该选择哪个地址?

例如,如果我选择0x8000_0000用作加载地址并将一些变量重新定义为双字(任何中断向量表条目都是双字),这就是我得到的:

国际开发协会示例

我得到一些无法使用的东西(我无法跳转到这些地址);我需要了解如何在早期阶段设置 IDA。

任何帮助,尤其是一些理论,表示赞赏:)

1个回答

重置向量位置是紧随其后的地址0xDEADBEEF(未显示在您的代码段中)。

它是第一条指令的相对分支分支到的函数。

告诉 IDA 在该地址 ( 0x8080xxxx)加载段