Determining Current Arm Cortex-M Security State with GDB
5 months ago
- #TrustZone
- #Debugging
- #Armv8-M
- Armv8-M微控制器通常包含Cortex-M安全扩展(CMSE),即TrustZone技术。
- CMSE将存储器划分为安全区与非安全区,处理器状态会根据当前执行区域自动切换。
- 栈指针(SP)可能对应主栈指针(MSP)或进程栈指针(PSP),具体取决于操作模式及CONTROL.SPSEL字段的配置。
- 启用CMSE后,寄存器(如MSP/PSP)会区分安全版本(*_S)与非安全版本(*_NS)。
- 通过检查SP当前匹配的栈指针变体(*_S或*_NS),可判定处理器的安全状态。
- 使用GDB命令查看SP、PSP_NS、MSP_NS、PSP_S和MSP_S寄存器可快速确认安全状态。
- 示例GDB输出显示:安全状态下SP匹配MSP_S,非安全状态下匹配PSP_NS。
- 通过检查CONTROL.SPSEL字段可判断线程模式中是否启用了PSP。