嵌入式开发交流网论坛
标题:
STM32逆向--固件Dump教程
[打印本页]
作者:
明天过后by
时间:
2020-8-9 04:22
标题:
STM32逆向--固件Dump教程
背景
终于难得闲暇和久违的激情,赶紧动手,这次也是初步的体验,所以目的就是简单的 dump 程序和基本反汇编。
工具集介绍
软件部分
OpenOCD
Open On-Chip Debugger,著名的开源硬件调试器。
支持多种的调试器,(St-link)(jlink) 之类的符合JTAG标准的。
支持多种 MPU 调试,只要是主流的都有(这次用到的 STM32F1x 默认有了配置文件)。
Arm-none-edbi-*
ARM 裸机使用的工具链 (注意是 none 不是 linux)。
这里主要提供调试的RunTime。
gdb
GDB,the GNU Project debugger 著名开源调试器 。
这里用于代替 OCD 的调试,毕竟还是专业许多 。
我们需要的功能虽然 OCD 就可以实现,但是使用 GDB 还是方便很多。
硬件部分
由于也是初步尝试,所以直接找了正点原子的战舰开发板(我们要使用的就是 JTAG 调试口,当然开发板已经接好了)。
战舰F1开发板 * 1
[attach]48500[/attach]采用的 STM32F1X 系列的 MPU 这个型号很重要,这个就决定了我们要dump的地址。这样才能找到flash 和sram 等。
Jlink * 1(当然国产寨版)
[attach]48501[/attach]能用就行,这个就是淘宝货,简单暴力,久经沙场,人手一个,纵横江湖。
动手
该接的先都接上 (电源 jlink blah..)
运行OCD
openocd -f interface/jlink.cfg -f target/stm32f1x.cfg
#注意不要反了
这里的两个 f 是指定的配置文件,大众器件。所以自带的都有,要是没有的话就在上面给出的网址下载即可 (这个不是全路径,是相对与 ocd 的安装目录 )。
运行之后,效果如图 :
[attach]48502[/attach]这样显示之后,说明调试器链接正常,且已经进入调试模式。
OCD命令
OCD在成功介入JTAG之后,会返回一个4444的tty控制台,我们直接 telnet上去。
telnet localhost 4444
#或者万能 NC 也可以
#nc -t localhost 4444
[attach]48503[/attach]这里就会返回一个 OCD 的调试会话 。
现在已经控制CPU了(help一大堆,不再赘述) 。
由于我们是要对固件进行dump,所以只要已经运行,我们把内存和flash 的数据抓出来就好了。
halt
#执行halt语句 (CPU 暂停)
GDB Attach
实际上直接使用OCD 可以达到效果,不过使用GDB 辅助,使得操作容易方便(可以TAB)。
gdb #先运行GDB
(gdb) target remote localhost:3333
[attach]48504[/attach]
执行完后,DGB attach完成(现在已经拿到了 CPU 的shell 可以为所欲为了)。
DUMP(重要)
终于到了最为核心的一步,就是firmware的dump操作。
首先我们需要的最重要的东西,就是内存映射图。
这个就相当于我们的地图一样,告诉我们哪里有什么数据,哪里是什么东西。
(这里就需要查看芯片
手册)
[attach]48505[/attach]
(图挺大,截取需要部分)
我们需要Dump的有:
Flash (装代码的你说呢)
SRAM (运行时候产生有趣的东西)
这样我们查看映射图可以得到信息:
flash的映射地址是 0x08000000 ~ 0x0807ffff (512KB)
sram的映射地址是 0x20000000 ~ 0x2000ffff (64K)
所以下面我们在gdb 中 把他们dump出来就好:
dump binary memory 32_sram.bin 0x200000000x2000ffff
dump binary memory 32_flash.bin 0x080000000x0807ffff上述命令就是以二进制形式 Dump 内存 和 flash 的数据出来:
[attach]48506[/attach]查看文件,大小就是我们的存储空间 。
到这里,本次 DUMP 完毕。
后记
这里只是逆向的初步,分析才是关键。
得到 flash 和 sram 数据后,使用 IDA进行操作 (这才是逆向)。
[attach]48507[/attach]本文由看雪论坛
林海n
原创
转载请注明来自看雪社区
欢迎光临 嵌入式开发交流网论坛 (http://www.dianzixuexi.com/bbs/)
Powered by Discuz! X3.2