开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2262|回复: 207
收起左侧

[易语言纯源码] 反调试新思路:利用内存工作集检测非法访问

    [复制链接]
回帖奖励 30 枚 精币 回复本帖可获得 2 枚 精币奖励! 每人限 1 次
结帖率:100% (2/2)
发表于 3 天前 | 显示全部楼层 |阅读模式   河南省安阳市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
本帖最后由 17176qq 于 2025-8-4 23:33 编辑
实现原理:创建一个特定的“陷阱”内存页,然后将其从进程的**工作集(Working Set)**中清除。

创建陷阱内存:
程序使用 VirtualAlloc 分配一块 4096 字节的内存区域作为“陷阱”。

清除工作集:
调用 EmptyWorkingSet,将所有内存页从物理内存中移除。此时,陷阱内存页的 Valid 标志位变为 0。

循环检测:
程序使用 QueryWorkingSetEx 持续监控陷阱内存页的状态。通过位运算(位与 (PWINFO.PSAPI_WORKING_SET_EX_BLOCK, 1))来检查 Valid 标志。

检测非法访问:
一旦有调试器或 Hook 程序尝试访问这块内存,Windows 会触发缺页中断,并将该页面重新加载到物理内存。这时,Valid 标志就会从 0 变为 1。

触发警报:
程序检测到 Valid 标志变为 1 后,会立即弹窗并结束程序,从而实现反调试。

游客,如果您要查看本帖隐藏内容请回复




2025-08-04_231704_201.png 2025-08-04_231755_858.png
补充(懒得手打解释了 让AI写的解释):以现有代码为载体的反调试思路
这个反调试技巧不仅可以用于专门分配的“陷阱”内存,更可以巧妙地应用在你程序中常用的、但非实时运行的函数上。

如何实现
  • 选择目标函数:选择一个在程序运行时不经常被调用,但又不能被删除的函数。例如,一个用于初始化配置、只在程序启动时运行一次的函数,或者是一个用于日志记录、但目前处于关闭状态的函数。
  • 设置陷阱:在程序正常运行期间,当你不需要调用这个函数时,你可以将这个函数的代码页从进程的工作集中移除(使用 EmptyWorkingSet)。
  • 循环监控:你的监控线程会像之前一样,持续检查这个函数代码页的 Valid 标志。
  • 按需使用:当你的程序需要真正执行这个函数时,你只需调用它。此时,操作系统会再次触发缺页中断,将代码页重新加载到物理内存中,Valid 标志会变为 1。在函数执行完毕后,你再将它从工作集中移除,继续监控。
  • 反调试效果:如果一个调试器或Hook程序试图在你的程序不调用这个函数时,去查看或修改这个函数所在的内存区域,就会提前触发缺页中断。你的监控线程会立即捕捉到 Valid 标志的异常变化,并采取相应的反调试措施。


点评

有些人攻击性还是太强了,没找到使用场景一顿乱喷   北京市北京市  发表于 昨天 12:25
就这只怕那种专用的od你检测都检测不到,还怎么了拦截   广东省广州市  发表于 昨天 00:32
思路或许可行,触发条件感人   山东省*  发表于 前天 10:11
差点让你得逞了 小丑   河南省安阳市  发表于 前天 09:49
最简单的,你发个demo,我开个帖子,让你看看R3调试器嘎嘎跑   湖北省恩施土家族苗族自治州  发表于 前天 09:44
  河南省安阳市  发表于 前天 09:38
最简单的,你放进OD里跑一下,你看看是你先断还是OD先断,笑死了   湖北省恩施土家族苗族自治州  发表于 前天 09:16
没啥好说的,你这个要求函数不再调用才能监控,函数不调用调试器断点都不会触发的。你这块内存都相当于不再使用了,也没有意义了。   湖北省恩施土家族苗族自治州  发表于 前天 09:13
楼下的 首先没求着你用 第二CRC是检测修改内存的 此技术是为了防止被非法访问 不如你来搞个新技术玩玩?   河南省安阳市  发表于 前天 09:00
有点脱裤子放屁,不如crc   湖北省恩施土家族苗族自治州  发表于 前天 08:50

评分

参与人数 32好评 +7 精币 +42 收起 理由
475837991 + 1 感谢分享,很给力!~
ican8 + 1 感谢分享,很给力!~
天雷 + 1 + 3 此处应该有鼓励~
cbl521ysys + 1 感谢分享,很给力!~
龍貓 + 1 + 2 新技能已get√
sundanming + 1 感谢分享,很给力!~
浮梦 + 1 感谢分享,很给力!~
yushizhuo + 1 感谢分享,很给力!~
Zźh926 + 1 感谢分享,很给力!~
huangdi956 + 1 感谢分享,很给力!~
YunXiGe + 1 感谢分享,很给力!~
洛哥 + 1 感谢分享,很给力!~
jc520hll + 1 感谢分享,很给力!~
z134 + 1 感谢分享,很给力!~
ma4747 + 1 感谢分享,很给力!~
无尘666 + 1 感谢分享,很给力!~
cui870222829 + 1 感谢分享,很给力!~
3266167 + 1 感谢分享,很给力!~
huangdi9569 + 1 感谢分享,很给力!~
pj小黑屋 + 1 感谢分享,很给力!~
liy456 + 1 感谢分享,很给力!~
文西哥 + 1 感谢分享,很给力!~
booms + 1 感谢分享,很给力!~
quary + 1 + 2 新技能已get√
望尘莫及 + 1 感谢分享,很给力!~
多多帅吧 + 1 共同努力,共同进步
暮光之城 + 1 感谢分享,很给力!~
初阳123 + 1 感谢分享,很给力!~
风雨3137 + 1 感谢分享,很给力!~
遂心 + 1 + 2 感谢分享,很给力!~
笨来无一悟 + 1 + 3 功德+1
凌哥 + 1 + 5 这个玩法有意思

查看全部评分


本帖被以下淘专辑推荐:

结帖率:100% (2/2)

签到天数: 5 天

 楼主| 发表于 前天 09:57 | 显示全部楼层   河南省安阳市
绕过方式也很简单,第三方访问前先检查Valid 标志(QueryWorkingSetEx ) 如果是0就不进行访问。
攻防无绝对,反调试配合起来使用效果才能达到最佳。可扩展性还是很强的,只是提供一个思路和简单的例子,给大家学习参考一起研究。
有些小丑连原理都没研究明白就过来指责,怪不得论坛没人分享什么有用的东西了。

点评

确实,我随便找了个调试器,得执行四五次这段反调试,才有可能被检测到一次。这在实际应用中不太可行   山东省*  发表于 半小时前
不是检查不检查的问题,而是没效果,调试器随便跑   湖北省恩施土家族苗族自治州  发表于 前天 11:37
回复 支持 反对

使用道具 举报

结帖率:82% (59/72)

签到天数: 3 天

发表于 5 分钟前 | 显示全部楼层   安徽省六安市

回帖奖励 +2 枚 精币

6666666666666
回复 支持 反对

使用道具 举报

签到天数: 6 天

发表于 1 小时前 | 显示全部楼层   浙江省宁波市

回帖奖励 +2 枚 精币

感谢分享,支持开源!!!
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 5 天

发表于 2 小时前 | 显示全部楼层   山东省青岛市

回帖奖励 +2 枚 精币

可以学习一下原理,感谢分享
回复 支持 反对

使用道具 举报

签到天数: 6 天

发表于 2 小时前 | 显示全部楼层   河南省郑州市

回帖奖励 +2 枚 精币

回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 2 天

发表于 2 小时前 | 显示全部楼层   湖北省武汉市

回帖奖励 +2 枚 精币

看雪上是不是已经发过了
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 4 天

发表于 2 小时前 | 显示全部楼层   浙江省宁波市
没啥用这个
回复 支持 反对

使用道具 举报

结帖率:96% (121/126)

签到天数: 5 天

发表于 3 小时前 | 显示全部楼层   山东省青岛市
感谢楼主分享!
回复 支持 反对

使用道具 举报

结帖率:92% (67/73)

签到天数: 3 天

发表于 3 小时前 | 显示全部楼层   山东省青岛市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)
发表于 5 小时前 | 显示全部楼层   山东省济宁市

回帖奖励 +2 枚 精币

谢谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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