【发布时间】:2020-02-20 13:26:31
【问题描述】:
我想通过编写已知模式来查看固件使用了多少 RAM,并比较 RAM 内容以查看已修改多少。
我试过了
reset halt
load_image pattern.bin 0xaddress
resume
(let target run for a bit)
halt
dump_image sram.bin 0xaddress 0xsize
但似乎我已经获得了闪存内容并且在任何地方都看不到测试图案。
我是否使用了正确的命令?如果我通过加载和转储手动“验证”,数据是相同的。
halt 会影响 RAM 内容吗?否则,是否可以假设应用程序实际上初始化了所有 RAM,从而使分析变得困难/不可能?
我应该指出我只有一个固件的“转储”,即我没有构建它。
【问题讨论】:
-
您能否提供您正在使用的 Cortex-M3 的准确参考,例如 ST Microelectronics STM32F103C8T6 ?这将有助于确定应该在
load_image/dump_image命令中使用哪些确切地址。 -
链接器生成的映射文件可以告诉您程序正在使用多少 RAM。
-
您的链接描述文件是什么样的? .text、.data 和 .bss 在哪里?对于 RAM 使用情况,您不仅要检查 .text 区域,还要检查所有 RAM。
-
@kkrambo 我没有构建固件。
-
@Frant 谢谢,但地址不是问题。
标签: arm embedded reverse-engineering microcontroller openocd