很久没有更新文章了, 最近一直在忙.
今天来讲一下od的 Alt+M内存窗口中的 F2内存访问断点. 如下图:
F2断点
在反汇编窗口按F2是设置INT3断点. 但在内存中却是设置内存断点, 或者说是一次性内存访问断点.
因为设置了断点之后,只要中断下来, 断点就会取消了. 有点类似 TF 位的追踪一样.
在没写调试之前, 我想的od的内存访问断点实现方式 应该是将页设置成 PAGE_NOACCESS 属性来实现的. 等中断之后再手动将断点取消.
然而并不是...
今天再写内存窗口属性功能的时候, 发现访问和初始访问中 经常会有一个 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...
|