首页
社区
课程
招聘
某程序CRC 内存断点无法断下的问题
发表于: 2020-11-23 11:49 3878

某程序CRC 内存断点无法断下的问题

2020-11-23 11:49
3878
1
2
3
4
5
6
7
众所周知 crc代码检验无论如何都会读取当前程序固定的代码段,以此我们只需通过内存断点即可回溯关键代码位置。而内存断点本质就是修改内存页属性让其不可读/不可写/不可执行,以此让其触发异常,走调试事件。
 
而本程序当我设置内存断点后未断下并且正常崩溃,我认为可能程序在读取内存前通过VirtualQueryEx 和 VirtualQuery获取内存页属性(该程序未加载驱动,未检测相关api代码)验证后却无效,而后我又猜测有可能通过VirtualProtect重新设置了内存页属性后读取,依然无效。那是否通过创建子进程等方式读取被保护的进程内存呢?通过相关ark工具显示未存在子进程。后又更换调试器无果,至此GG....
 
万般无奈之下通过看雪搜索到了 [相关的解决办法](https://bbs.pediy.com/thread-262651.htm) 通过ReadProcesMemory这种方式不会在访问断点断下
 
那为什么不会被断下呢?一开始我以为是MmCopyVirtualMemory这个函数在作怪但通过ida跟踪发现其本质上只调用了memcpy来否则内存

图片描述

1
那这样就一定会触发异常进入异常分发,而后进入调试事件分发,由此问题一定是调试器的,所以我拿出了我的控制台调试器

图片描述
哈哈 果然是x64dbg/od 等调试器忽略了这类异常,至于为什么这些调试器要忽略我就不清楚了...难道是因为该异常发生于0环导致调试器无法处理吗?


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
mdl
2020-11-23 16:23
0
雪    币: 2325
活跃值: (2304)
能力值: ( LV6,RANK:89 )
在线值:
发帖
回帖
粉丝
3
应该是调试器接管了异常,才会没有反馈给程序,可以试试od设置忽略所有异常
2020-11-24 21:28
0
游客
登录 | 注册 方可回帖
返回
//