觅风论坛
标题:
程序利用内存工作集检测非法访问来实现OD或CE反调试源码分享
[打印本页]
作者:
MatthewAsync
时间:
昨天 10:37
标题:
程序利用内存工作集检测非法访问来实现OD或CE反调试源码分享
实现原理:创建一个特定的“陷阱”内存页,然后将其从进程的**工作集(Working Set)**中清除。
创建陷阱内存:
程序使用 VirtualAlloc 分配一块 4096 字节的内存区域作为“陷阱”。
清除工作集:
调用 EmptyWorkingSet,将所有内存页从物理内存中移除。此时,陷阱内存页的 Valid 标志位变为 0。
循环检测:
程序使用 QueryWorkingSetEx 持续监控陷阱内存页的状态。通过位运算(位与 (PWINFO.PSAPI_WORKING_SET_EX_BLOCK, 1))来检查 Valid 标志。
检测非法访问:
一旦有调试器或 Hook 程序尝试访问这块内存,Windows 会触发缺页中断,并将该页面重新加载到物理内存。这时,Valid 标志就会从 0 变为 1。
触发警报:
程序检测到 Valid 标志变为 1 后,会立即弹窗并结束程序,从而实现反调试。
欢迎光临 觅风论坛 (https://www.eyyba.com/)
Powered by Discuz! X3.4