良许Linux教程网 干货合集 分享一个通过STM32的bin文件逆向分析代码的工具

分享一个通过STM32的bin文件逆向分析代码的工具

首先,我们需要获取一个bin文件(本文不详细介绍如何获取bin文件,可以以后单独讨论)。本次实验使用的bin文件是图片 stm32_xwrtos.bin.zip(大小为6 KB),它是使用ST官方的CMSIS和外设库编译的,可在stm32f103c8t6芯片上运行,并具有代表性。

烧录文件下载:

下载链接:https://pan.baidu.com/s/1YiMkyqbdPxGOI_vwGtOlJw

提取码:yi56

工具准备:

  1. 安装开源的跨平台逆向工具r2:

    GitHub链接:https://github.com/radareorg/radare2

    r2可在Windows、Linux、Mac等主流操作系统上运行(r2的强大功能不在此介绍,以后可以另行讨论)。

image-20231203202631851
image-20231203202631851

2)输入aaaa,运行自动化分析。

image-20231203202635105
image-20231203202635105

3)输入pxw 268 @0x08000000 以小端四字节形式打印从0x08000000开始的268(268对应中断向量表大小)个字节,同时打开ST官方的启动文件startup_stm32f10x_md.s并找到.isr_vector段进行对照。

image-20231203202645218
image-20231203202645218

4)接着上一步,输入fs notes,创建并切换到一个名为notes(可以是任意其他名字)的符号记事本;按照f flag=address的形式,对照.isr_vector段,向符号记事本中录入感兴趣的符号地址对应关系。注意如果address是函数地址则需要减1(因为thumb指令的要求,具体原因此处不展开);最后输入af @flag形式的命令强制进行函数分析。

image-20231203202653542
image-20231203202653542

\5) 输入pdf @Reset_Handler,对Reset_Handler函数进行反汇编

image-20231203202657851
image-20231203202657851

输入 VV 切换到流程图视图

image-20231203202708823
image-20231203202708823

通过阅读汇编代码,可以得到以下信息:
\1. data段的地址区间为0x20000000-0x20000028 bss段的地址区间为0x20000028-0x2000043C

\2. Reset_Handler用0x08002cbc开始的0x28字节初始化data段,用0填充bss段

\3. 调用fcn.08001cc8函数

\4. 调用fcn.08001734函数

6)输入pdf @fcn.08001cc8进行反汇编

image-20231203202712566
image-20231203202712566

发现对外设寄存器地址0x40021000的引用

image-20231203202715907
image-20231203202715907

通过查询数据手册,可判断fcn.08001cc8函数应为系统初始化化函数SystemInit(),它初始化了时钟。

7)根据经验判断fcn.0800173函数即为main函数

本篇主要作用是带大家熟悉和习惯r2的基本使用,以及对逆向有个感性认识。后面有机会再给大家讲述在逆向的基础上介绍stm32上的栈溢出漏洞的挖掘与利用。

再次感谢ilovepp兄分享的精彩文章!

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部