终于难得闲暇和久违的激情 , 赶紧动手 , 这次也是初步的体验 , 所以目的就是简单的 dump 程序 , 和基本反汇编
OpenOCD
Open On-Chip Debugger 著名的开源硬件调试器
支持多种的 调试器 (St-link)(jlink) 之类的符合JTAG标准的
支持多种 MPU 调试 只要是主流的都有(这次用到的 STM32F1x 默认有了配置文件)
http://openocd.zylin.com/
这里附上配置文件下载地址可以选择不同的 mpu
Arm-none-edbi-*
ARM 裸机使用的工具链 (注意是 none 不是 linux)
这里主要提供调试 的 RunTime
gdb
GDB, the GNU Project debugger 著名开源调试器
这里用于代替 OCD 的调试 , 毕竟还是专业许多
我们需要的功能虽然 OCD 就可以实现 , 但是使用GDB 还是方便很多
由于也是初步尝试 , 所以直接找了正点原子的 战舰开发板
(我们要使用的就是 JTAG 调试口, 当然开发板已经接好了)
战舰F1开发板 * 1
采用的 STM32F1X 系列的 MPU 这个型号很重要 , 这个就决定了我们要dump的地址
这样才能 找到flash 和sram 等
Jlink * 1
(当然国产寨版)
能用就行
这个就是淘宝货 , 简单暴力 , 久经沙场 , 人手一个 , 纵横江湖
这里的两个 f 是指定的配置文件, 大众器件 所以自带的都有, 要是没有的话就在上面给出的网址下载即可
(这个不是全路径 是相对与 ocd 的安装目录 )
运行之后 , 效果如图
这样显示之后 , 说明调试器链接正常 , 且已经进入调试模式
OCD在 成功 介入JTAG之后 会返回一个 4444 的 tty控制台 我们直接 telnet上去
这里就会返回一个 OCD 的调试会话
现在已经控制CPU了(help 一大堆 不再赘述)
由于我们是要对固件进行dump, 所以只要已经运行, 我们把内存, 和flash 的数据抓出来就好了
实际上直接使用OCD 可以达到效果, 不过使用GDB 辅助, 使得操作容易方便(可以TAB)
执行完后 DGB attach 完成
(现在已经拿到了 CPU 的shell 可以为所欲为了)
终于到了最为核心的一步,就是firmware的dump操作
首先我们需要的最重要的 的东西就是内存映射图
这个就相当于我们的 地图一样 告诉我们哪里有 什么数据 , 哪里是什么东西
(这里就需要查看芯片手册)
在手册的第四节 Memory Mapping中
(图挺大 截取需要部分)
我们需要Dump的有
这样我们查看映射图可以得到信息
所以下面我们在gdb 中 把他们dump出来就好
上述命令就是以二进制形式 Dump 内存 和 flash 的数据出来
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2018-11-8 18:18
被kanxue编辑
,原因: