[技术问答] 用Keil仿真调试查看变量内存地址被篡改的方法

[复制链接]
3606|16
 楼主| tabmone 发表于 2024-7-17 19:36 | 显示全部楼层 |阅读模式

1.首先进入仿真调试,打开想要查看的变量的watch窗口,在改变量右击,出现Set Access Breakpoint,

2.进入选项框 选中Write,然后定义,关闭窗口,运行软件,当改变量地址的值被篡改,则软件停止运行,便于查看内存溢出的现象


Annie556 发表于 2024-8-21 15:07 | 显示全部楼层
这是一个好的办法啊,我觉得挺不错的
Charlene沙 发表于 2024-8-21 16:12 | 显示全部楼层
其实变量变化就停止意义不大,不如断点有效果
Estelle1999 发表于 2024-8-21 17:18 | 显示全部楼层
这种变量估计得是全局变量才可以吧?
Charlene沙 发表于 2024-8-21 18:25 | 显示全部楼层
看着还不错啊,这个操作
B1lanche 发表于 2024-8-21 19:30 | 显示全部楼层
我是挺喜欢这种调试方法的,就是不知道响应方面如何?
Carina卡 发表于 2024-8-21 20:35 | 显示全部楼层
是进入到变量地址被改之后,直接就断点接入吗?
Carmen7 发表于 2024-8-21 21:47 | 显示全部楼层
这种停止可以看到变量地址被修改的情况呗,这种能查到内存溢出的问题吗?
Emily999 发表于 2024-8-22 09:00 | 显示全部楼层
我觉得内存溢出还是用log的方式打印出来比较好吧
Belle1257 发表于 2024-8-22 10:06 | 显示全部楼层
这种地址被篡改的操作我还没咋遇到过,都是内容被篡改的多一些
Alina艾 发表于 2024-8-22 12:14 | 显示全部楼层
这倒是一个很好的方法,可以大致定位到哪里溢出
BlitheYANG 发表于 2025-10-22 10:41 | 显示全部楼层
没有图片?
小岛西岸来信 发表于 2025-11-3 11:20 | 显示全部楼层
在 Keil 中,先在变量定义处右键 “Add Watch” 跟踪地址;启用 “Memory” 窗口输入变量地址监控数据。设置断点后单步运行,观察内存值突变时刻,结合 “Call Stack” 回溯调用栈,或用 “Data Breakpoints” 设内存写断点,触发时定位篡改代码位置。
热爱浪漫 发表于 2025-11-13 12:05 | 显示全部楼层
在 Keil 中,先在变量定义处右键 “Add Watch” 监控变量。开启调试后,用 “Memory Window” 输入变量地址锁定区域。设置数据断点:右键变量选 “Breakpoint”→“Data Breakpoint”,设 “Write” 触发。运行时若地址被改,程序会暂停,结合调用栈查看当前执行函数,定位篡改源头。
夏眠毁灭者 发表于 2025-11-13 18:06 | 显示全部楼层
在 Keil 中,可先在变量定义处设断点,运行后在 Watch 窗口查看变量内存地址。接着开启 Memory 窗口输入该地址监控数据。再用断点或单步执行,观察地址数据是否异常变化,结合 Call Stack 窗口追踪调用链,定位篡改代码位置,也可使用数据断点(Breakpoint→Data Breakpoint),当地址数据改变时自动中断。
抱素 发表于 2025-11-14 18:34 | 显示全部楼层
在 Keil 中,先在变量定义处右键 “Add Watch” 跟踪变量值。启用 “Memory” 窗口输入变量地址实时监控内存。设置数据断点:在 “Breakpoints” 窗口选 “Data Breakpoint”,输入变量地址和长度,勾选 “Write”,当地址被篡改时自动中断,结合调用栈查看篡改位置。
夏眠毁灭者 发表于 2025-11-15 11:44 | 显示全部楼层
在 Keil 中,先在变量定义处设数据断点:右键变量选 “Add Watch”,查看其内存地址;再通过 “Debug→Breakpoints” 添加内存写入断点,指定该地址及长度。调试时,当地址被篡改会自动中断,结合调用栈查看当前执行函数,逐步回溯找到篡改源头,配合单步执行验证。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

1738

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部