Hasty Briefsbeta

双语

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。