硬汉嵌入式论坛

 找回密码
 立即注册
查看: 993|回复: 5
收起左侧

[技术讨论] 一种所有数组越界溢出的检测思想(待大家讨论)

[复制链接]

11

主题

28

回帖

61

积分

初级会员

积分
61
发表于 2024-12-14 14:23:57 | 显示全部楼层 |阅读模式
Keil编译的时候,可以知道所有变量的地址,大小。如果可以在编译的时候,在每个变量间插入一个Uint8或者Uint16内容值为0xAA,0xA5什么的,然后用Jlink读取出所有这些打桩变量,看看哪个变量被更改了。就知道哪些变量操作出现了数据溢出,数组越界。这个方法可能跟编译器编译方法有关系。有没有大佬知道怎么改编译器吗?
回复

使用道具 举报

6

主题

306

回帖

324

积分

高级会员

积分
324
发表于 2024-12-14 20:33:12 | 显示全部楼层
我记得堆栈最极限位置如果用了OS,它就是一个特殊的数字,OS自己检测溢出也是用的这种方法。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-12-15 09:31:06 | 显示全部楼层
这个可以自己定义变量的时候全部初始化为对应的值。
回复

使用道具 举报

11

主题

28

回帖

61

积分

初级会员

积分
61
 楼主| 发表于 2024-12-15 18:15:26 来自手机 | 显示全部楼层
eric2013 发表于 2024-12-15 09:31
这个可以自己定义变量的时候全部初始化为对应的值。

我的想法是不用改变代码,编译的时候就自动上桩了....
回复

使用道具 举报

11

主题

28

回帖

61

积分

初级会员

积分
61
 楼主| 发表于 2024-12-15 18:15:51 来自手机 | 显示全部楼层
fxyc87 发表于 2024-12-14 20:33
我记得堆栈最极限位置如果用了OS,它就是一个特殊的数字,OS自己检测溢出也是用的这种方法。

是的,这是os的方法.
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-12-16 08:21:15 | 显示全部楼层
a2412462142 发表于 2024-12-15 18:15
我的想法是不用改变代码,编译的时候就自动上桩了....

实际上一样的,比如编译器初始化为 0的ZI区,只是IDE添加函数初始化好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 06:02 , Processed in 0.042741 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表