IOT安全-固件提取
字数 2058 2025-08-22 12:23:13
STM32芯片固件提取技术详解
一、工具准备
硬件工具
-
FT232芯片
- 功能:USB与串口之间的桥接设备
- 特点:
- 内部集成USB串口引擎(USB-Serial Engine)
- 通过USB接口与主机设备通信
- 利用内部UART引擎与外部设备进行串口通讯
-
杜邦线
- 用途:连接FT232与串口
- 特点:
- 无需焊接即可牢靠连接插针
- 便于快速进行电路试验
-
万用表
- 功能:测量电参数
- 在固件提取中的用途:
- 识别UART的四个关键引脚:VCC、GND、RX、TX
- 测量参数:直流电压、交流电压、电阻、电流等
-
焊接工具
- 焊烙:用于稳定连接芯片PIN脚和杜邦线
- 注意事项:需要一定操作技巧,建议专业人员操作
-
替代焊接的方案
- ECU探针:配合操作台进行连接
- 芯片夹:适用于MCU等精细固定
- 支持SOP、QFP等针脚外露的芯片
- 不适用于QFN、BGA封装
软件工具
-
STM32CubeProgrammer
- 功能:STM32芯片编程工具
- 优势:比STLink更推荐使用
- 用途:查看和修改芯片保护状态,提取固件
-
参考文档
- Datasheet数据手册:芯片引脚和电气特性
- Reference manual参考手册:详细寄存器配置和标志位说明
二、UART引脚识别方法
四个关键引脚
-
VCC
- 供电引脚
- 电压:通常为3.3V(恒定不变)
-
GND
- 接地引脚
- 识别方法:使用万用表蜂鸣档测试
-
TX
- 发送数据引脚
- 特点:开机时会有数据传输,电压会变化
-
RX
- 接收数据引脚
- 特点:有外部数据传输时电压会变化
具体识别步骤
-
定位GND
- 万用表设置:蜂鸣档
- 方法:
- 黑表笔接背面电源焊锡点
- 红表笔触碰UART引脚
- 发出蜂鸣声的即为GND
-
定位VCC
- 万用表设置:直流20V档
- 方法:
- 黑表笔接已识别的GND
- 红表笔测试其他引脚
- 显示3.3V的即为VCC
-
定位TX
- 方法:
- 黑表笔接GND
- 重启设备时用红表笔测试剩余引脚
- 电压发生变化的即为TX
- 方法:
-
定位RX
- 方法:排除法,剩余的一个引脚即为RX
- 或观察有数据传输时电压变化的引脚
备选方法:当无法准确识别时,可尝试所有可能的引脚组合,通过电脑是否弹出提示来判断正确连接。
三、固件提取的三种途径
1. 从外部Flash提取
适用情况:
- Flash与RAM、CPU分别独立
- Flash未采取保护措施
特点:
- 直接连接Flash即可尝试提取
- 比从MCU提取更简单
操作步骤:
-
查找芯片上的外部独立Flash位置
- 肉眼观察或使用电子显微镜
- 注意寻找小黑圆点作为方向标记
-
根据封装类型选择连接方式
- SOP8等引脚外露封装:使用芯片夹
- QFN、BGA等封装:需要其他方法
-
连接并读取Flash内容
2. 从MCU内置Flash提取
适用情况:
- 固件存储在MCU内置Flash中
- 可能需要通过调试接口提取
操作步骤:
-
查找调试接口
- 参考芯片手册的"Pinouts and pin description"部分
- 常见封装类型:
- LQFP48:48引脚
- LQFP64:64引脚
- LQFP100:100引脚
-
连接调试接口
- 常见接口类型:SWD、JTAG等
- 使用芯片夹连接对应引脚
-
使用STM32CubeProgrammer
- 检查读保护状态
- 尝试提取固件
3. 读保护状态分析
通过STM32CubeProgrammer可查看三种保护级别:
-
级别0(0xAA)
- 无读保护
- 所有模式下均可读取Flash
-
级别1(默认BB)
- 启用读保护
- 限制:
- 调试模式下不能访问Flash
- 从RAM或系统存储器自举时不能访问Flash
- 取消保护方法:
- 将保护级别改为0xAA
- 注意:会擦除整个Flash和备份SRAM
-
级别2(0xCC)
- 最高保护级别
- 额外限制:
- 禁止从RAM或系统存储器自举
- 禁用JTAG、SWV、ETM和边界扫描
- 用户选项字节不可更改
- 重要警告:
- 一旦激活级别2,无法降级
- 可能导致设备变成"板砖"
注意事项:修改保护级别可能导致固件擦除,操作需谨慎!
四、参考资料获取
-
Datasheet下载
- 官网地址:https://www.st.com/en/microcontrollers-microprocessors/stm32f302cb.html
- 选择对应芯片型号的版本
-
Reference Manual
- 示例手册:RM0365 (STM32F302xBCDE和STM32F302x68)
- 下载地址:https://www.st.com/resource/en/reference_manual/rm0365-stm32f302xbcde-and-stm32f302x68-advanced-armbased-32bit-mcus-stmicroelectronics.pdf
五、操作注意事项
- 焊接操作需谨慎,建议由专业人员完成
- 修改读保护级别可能导致数据丢失
- 级别2保护激活后不可逆,慎用
- 当遇到读保护(BB状态)时,可能需要寻找其他提取方法
- 不同封装类型需要不同的连接方式
- 操作前务必确认芯片型号并下载对应手册