注册

CpuDbg x96

查看: 654|回复: 0
收起左侧

F2内存访问断点的实现

[复制链接]
发表于 2023-4-18 23:11:59 | 显示全部楼层 |阅读模式
很久没有更新文章了, 最近一直在忙.
今天来讲一下od的 Alt+M内存窗口中的 F2内存访问断点. 如下图:

F2断点

F2断点


在反汇编窗口按F2是设置INT3断点. 但在内存中却是设置内存断点, 或者说是一次性内存访问断点.
因为设置了断点之后,只要中断下来, 断点就会取消了. 有点类似 TF 位的追踪一样.

在没写调试之前, 我想的od的内存访问断点实现方式 应该是将页设置成 PAGE_NOACCESS 属性来实现的. 等中断之后再手动将断点取消.
然而并不是...

今天再写内存窗口属性功能的时候, 发现访问和初始访问中 经常会有一个 Guarded. 之前写到这个功能的时候也没有研究它,直接就照写了. 如下图:

Guarded

Guarded


这个 Guarded 属性 对应的宏是 PAGE_GUARD, 经常和 PAGE_READWRITE 属性 成对出现.
自从有了chatgpt后, 写代码什么的也都很方便, 大部分都会让gpt帮忙写.
我就随手打出来问了一下gpt, PAGE_GUARD 的作用. 如下图:

内存访问断点

内存访问断点


看他解释的就是访问该页面时, 会抛异常. 第二个回答,我看的也有点迷糊.
我猜测的是 应该是和TF位的单步一样, 触发异常后, PAGE_GUARD 属性就会消失了.
这样一来, 就正好可以用来实现 od1.x 中的 F2内存访问断点.
这一些都只是我猜测的, 还未测试.
等回头测试了,再来写测试结果.
----------------------------------------------------------------------------------
2023.04.19
刚刚用od1.x测试了一下, 按了F2后, access 列的页属性会增加一个 PAGE_GUARD 属性.
那说明和我猜的差不多了.
等回头写到F2内存断点了,再来验证,到时候再来更新...
----------------------------------------------------------------------------------
to be continued...


回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注册

QQ|Archiver|手机版| CpuDbg x96

GMT, 2024-4-29 12:31 , Processed in 0.062500 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2013 Comsenz Inc.

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