0
点赞
收藏
分享

微信扫一扫

【PWN · ret2libc】[CISCN 2019东北]PWN2

cnlinkchina 2023-06-02 阅读 61

现象:

STM32F030C8中PC13引脚异常,配置为GPIO输出,有时编译后出现异常,表现如下:
1、不能输出高电平。
2、烧回原来正确的版本固件,也不能输出高电。
3、过一段时间后,能恢复。
4、同样的代码,改变一下编译优化等级,有可能正常。也有可能不正常。
5、同样的代码,交换一下代码顺序,有可能正常。也有可能不正常。
6、同样的代码,添加或屏蔽一段代码,有可能正常。也有可能不正常。

分析:

1、PC13引脚与RTC功能复用,有可能是因此引起:

在这里插入图片描述
PC13引脚可用配置选项如下:
在这里插入图片描述

2、在线调试发现,异常时,RTC_TS input enabled位会被置1。
3、查询代码发现 进行RTC初始化时,屏蔽了一段代码:

在这里插入图片描述
4、查询RTC_Init(),发现RTC-CR未进行明确初始化,且采用“|=”进行赋值,
RTC_InitStruct->RTC_HourFormat由于前面实参被屏蔽,实参值为局部变量的值,而局部变量由于前面被屏蔽,未进行明确初始化,其值处于未定状态。此可能导致RTC_TS input enabled位会被置1。

在这里插入图片描述

解决办法:

打开被屏蔽语句,进行明确初始化。

总结:

对于未明确初始化的局部变量,一定要慎重处理。

举报

相关推荐

0 条评论