吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 13961|回复: 85

[游戏安全] 关于某P对硬件断点做出的保护分析及对抗办法

  [复制链接]
发表于 2017-1-12 03:38 | 显示全部楼层
本帖最后由 Poner 于 2017-1-13 15:01 编辑

实验环境
操作系统:Windows 7 旗舰版 Sp1工具:OllyDbg、CheatEngine 6.5
前言: 对于某P,我已经研究了将近4年时间,但一直没有把自己所知贡献过一丁点给大家,在这里我表示非常抱歉!

正文:
           废话我就不多说了 直接进入正题,这次给大家贡献关于某P对硬件断点的保护是如何进行并且如何绕过的。
           首先,过掉驱动层保护,开Ollydbg附加好某P保护的游戏,这里我就拿XF来做个演示

           既然是硬件断点,那少不了跟异常打交道,附加好XF后直接跳到KiUserExceptionDispatcher(异常分发函数),发现如下图:
1.png
          为什么他会在这里下一个HOOK? 因为异常发生后 会先经过驱动层 然后驱动层无法处理这个异常直接往下面抛 到了应用层后会直接走KiUserExceptionDispatcher(异常分发函数),所以某P在这里下HOOK是为了接管应用层所有异常
          然后我们继续,先看下他自己给自己占的坑,如下图:
          2.png

           如图我们看到DR0、1、2、3全部都被下了断点,DR7=553(XP下面看到是455)
          他既然占了坑 那肯定要产生异常 不然的话 做这个硬件断点占坑根本没必要!
          所以我们跟进他在异常分发的HOOK:
         
[Asm] 纯文本查看 复制代码
101F8260    FC              CLD[/align]101F8261    51              PUSH ECX
101F8262    8B0C24          MOV ECX,DWORD PTR SS:[ESP]
101F8265    51              PUSH ECX
101F8266    8B0C24          MOV ECX,DWORD PTR SS:[ESP]
101F8269    898C24 04000000 MOV DWORD PTR SS:[ESP+4],ECX
101F8270    8B8C24 0C000000 MOV ECX,DWORD PTR SS:[ESP+C]
101F8277    890C24          MOV DWORD PTR SS:[ESP],ECX
101F827A    8B0C24          MOV ECX,DWORD PTR SS:[ESP]
101F827D    898C24 04000000 MOV DWORD PTR SS:[ESP+4],ECX
101F8284    53              PUSH EBX
101F8285    8B9C24 04000000 MOV EBX,DWORD PTR SS:[ESP+4]
101F828C    53              PUSH EBX
101F828D    8B9C24 04000000 MOV EBX,DWORD PTR SS:[ESP+4]
101F8294    899C24 08000000 MOV DWORD PTR SS:[ESP+8],EBX
101F829B    8B8C24 10000000 MOV ECX,DWORD PTR SS:[ESP+10]
101F82A2    898C24 04000000 MOV DWORD PTR SS:[ESP+4],ECX
101F82A9    E9 F8440C00     JMP crossf_1.102BC7A6

       因为这里是乱序(某P大多数代码都是乱序 基本上没有VM 所以很好分析),所以继续往下跟:
      
[Asm] 纯文本查看 复制代码
102C48F2    8B1C24          MOV EBX,DWORD PTR SS:[ESP]
102C48F5    899C24 04000000 MOV DWORD PTR SS:[ESP+4],EBX
102C48FC    8B9C24 04000000 MOV EBX,DWORD PTR SS:[ESP+4]
102C4903    891C24          MOV DWORD PTR SS:[ESP],EBX
102C4906    8B1C24          MOV EBX,DWORD PTR SS:[ESP]
102C4909    899C24 0C000000 MOV DWORD PTR SS:[ESP+C],EBX
102C4910    8B9C24 04000000 MOV EBX,DWORD PTR SS:[ESP+4]
102C4917    891C24          MOV DWORD PTR SS:[ESP],EBX
102C491A    8F0424          POP DWORD PTR SS:[ESP]
102C491D    5B              POP EBX
102C491E    9D              POPFD
102C491F    E8 3F0FF7FF     CALL crossf_1.10235863                   ; 某P的异常处理函数,我们可以称之他为RtlDispatchException
102C4924    50              PUSH EAX
102C4925    8B0424          MOV EAX,DWORD PTR SS:[ESP]
102C4928    50              PUSH EAX
102C4929    8B0424          MOV EAX,DWORD PTR SS:[ESP]
102C492C    898424 04000000 MOV DWORD PTR SS:[ESP+4],EAX
102C4933    8B8424 04000000 MOV EAX,DWORD PTR SS:[ESP+4]
102C493A    51              PUSH ECX

   跟进这个CALL 我们继续:
[Asm] 纯文本查看 复制代码
101EF52D    58              POP EAX
101EF52E    58              POP EAX
101EF52F    9C              PUSHFD
101EF530    50              PUSH EAX
101EF531    8B0424          MOV EAX,DWORD PTR SS:[ESP]
101EF534    310424          XOR DWORD PTR SS:[ESP],EAX
101EF537    8B8424 0C000000 MOV EAX,DWORD PTR SS:[ESP+C]
101EF53E    010424          ADD DWORD PTR SS:[ESP],EAX
101EF541    58              POP EAX
101EF542    9D              POPFD
101EF543    50              PUSH EAX
101EF544    9C              PUSHFD
101EF545    33C0            XOR EAX,EAX
101EF547    038424 04000000 ADD EAX,DWORD PTR SS:[ESP+4]
101EF54E    9D              POPFD
101EF54F    8138 04000080   CMP DWORD PTR DS:[EAX],80000004          ; 判断异常是否为0x80000004(硬件断点异常)
101EF555    8B8424 04000000 MOV EAX,DWORD PTR SS:[ESP+4]
101EF55C    890424          MOV DWORD PTR SS:[ESP],EAX
101EF55F    8F0424          POP DWORD PTR SS:[ESP]
101EF562    E8 526D0000     CALL crossf_1.101F62B9

为什么要判断? 因为他自己占的坑需要处理,不然的话直接崩溃!
我们继续跟看他是如何处理这个异常的
[Asm] 纯文本查看 复制代码
101EB857    C78424 04000000>MOV DWORD PTR SS:[ESP+4],crossf_1.0F0DA392             ; 上面那个异常地址判断我直接跑飞了 到了这里 这句代码的意思是修改当前EIP为0F0DA392
101EB862    57              PUSH EDI
101EB863    8BBC24 04000000 MOV EDI,DWORD PTR SS:[ESP+4]
101EB86A    57              PUSH EDI
101EB86B    8BBC24 04000000 MOV EDI,DWORD PTR SS:[ESP+4]
101EB872    89BC24 08000000 MOV DWORD PTR SS:[ESP+8],EDI
101EB879    8B9424 0C000000 MOV EDX,DWORD PTR SS:[ESP+C]
101EB880    899424 04000000 MOV DWORD PTR SS:[ESP+4],EDX
101EB887    8B9424 04000000 MOV EDX,DWORD PTR SS:[ESP+4]
101EB88E    52              PUSH EDX
101EB88F    8B1424          MOV EDX,DWORD PTR SS:[ESP]
101EB892    899424 08000000 MOV DWORD PTR SS:[ESP+8],EDX
101EB899    8BBC24 0C000000 MOV EDI,DWORD PTR SS:[ESP+C]
101EB8A0    893C24          MOV DWORD PTR SS:[ESP],EDI
101EB8A3    8B3C24          MOV EDI,DWORD PTR SS:[ESP]
101EB8A6    89BC24 10000000 MOV DWORD PTR SS:[ESP+10],EDI
101EB8AD    8BBC24 08000000 MOV EDI,DWORD PTR SS:[ESP+8]
101EB8B4    50              PUSH EAX
101EB8B5    E8 01000000     CALL crossf_1.101EB8BB

[Asm] 纯文本查看 复制代码
1021FEF9    04 24           ADD AL,24
1021FEFB    59              POP ECX
1021FEFC    9D              POPFD
1021FEFD    FF15 1CF72C0F   CALL DWORD PTR DS:[F2CF71C]                            ; 然后直接调用ZwContinue 这个异常就处理完毕了
1021FF03    E9 E10B0100     JMP crossf_1.10230AE9

最近我看到很多人在问 为什么自己HOOK了异常分发函数 接管了所有异常 并且处理了ZwGetContextThread还是被检测到
这里我给你们一个答案:
1、替换了某P占的坑 从而某P自己下的断点没有触发 原来的代码直接往下执行 并没有实现某P自己用硬件断点做的JMP 所以会被检测。(继续往下执行的代码可能是直接往服务器发送数据请求封号 这里我没有往下分析)
解决方案:在某P下的4个断点位置自己直接写JMP 跳转到他异常分发处理后的EIP地址(如果怕CRC,可以直接修改游戏英文名称+base.dll这个文件 据我所知目前这个文件没有文件校验 修改了物理文件 CRC就不会报异常 因为他是直接根据文件内容来比对的)
2、有些线程某P是没有下断点的 但大部分都下了断点,如果是这样 那么在ZwGetContextThread这个函数处理的同时需要注意:清空某P的断点之前 记录好他在哪些线程下了断点 那些线程没下断点 ,他自己在Get的同时恢复之前的DR数据即可,还有就是需要在这里判断一下eax 有时候
      没有Get成功的话 不要返回数据 不然一样被检测!
3、RtlDispatchException这里return的时候需要注意Context里面的DR寄存器也要还原成原来线程的DR 不然一样被检测!
按照上面处理方式来直接处理 某P对硬件断点的保护基本上就废了


本篇文章就到这里 希望大家可以对某P实现保护的方式建立起新的认识。
本文仅供技术研究,请勿用于商业用途!
                                                                                                                                  如需转载 请注明原文出处:吾爱破解
                                                                                                                                                  原创:Poner
下一篇文章:关于某P对游戏中数据的检测方式及对抗办法
敬请期待!

免费评分

参与人数 44吾爱币 +49 热心值 +43 收起 理由
XiaoBao20 + 1 用心讨论,共获提升!
Lokavid + 1 我很赞同!
heimu360 + 1 我很赞同!
浅时光倾城丶 + 1 + 1 我很赞同!
迷茫小白 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lapop + 1 + 1 热心回复!
yuxing818 + 1 热心回复!
aipanpann + 1 + 1 热心回复!
18611429192 + 1 + 1 谢谢@Thanks!
2864095098 + 1 热心回复!
wkcjll + 1 + 1 用心讨论,共获提升!
Cyrus_xxx + 1 + 1 谢谢@Thanks!
zl6511130 + 1 + 1 热心回复!
seoke + 1 + 1 谢谢@Thanks!
luozheng97 + 1 + 1 我很赞同!
qwe1035135872 + 1 + 1 谢谢@Thanks!
yunzl + 1 + 1 已答复!
yo4yo + 1 + 1 谢谢@Thanks!
a5112075 + 1 + 1 谢谢@Thanks!
zzzmxrxl + 1 + 1 我很赞同!
soyiC + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
EVGA + 1 + 1 用心讨论,共获提升!
笑江湖 + 1 + 1 我很赞同!
q74330 + 1 + 1 我很赞同!
黑龍 + 3 + 1 用心讨论,共获提升!
gxhayxj + 1 + 1 用心讨论,共获提升!
37566454 + 1 + 1 说明了大概 部分没有详细说明
cqr2287 + 3 + 1 我很赞同!
siuhoapdou + 1 + 1 谢谢@Thanks!
精华帖 + 1 + 1 谢谢@Thanks!
xyuetao + 1 + 1 我很赞同!
zouxm2008 + 1 + 1 热心回复!
wcj1997 + 1 + 1 已答复!
珍惜幸福涙 + 1 + 1 厉害,学习了!期待下一篇!
海底总动员 + 1 + 1 我很赞同!
DnewvoillC + 1 + 1 热心回复!
回归自然 + 1 + 1 热心回复!
NULL + 1 + 1 我很赞同!
wnagzihxain + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
gogogo2000 + 1 + 1 用心讨论,共获提升!
墨血 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Jr丶新一 + 3 + 1 非常厉害
王小雨 + 1 + 1 不错,前排兜售瓜子、可乐~~~~
610100 + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

发表于 2017-1-27 00:04 | 显示全部楼层
哥唉,CF,遍历模块就蓝呀。一朋友说:
奇淫的一个小技巧,一年前就解决了.
解决方法就是地址有效时正常正常遍历,地址无效时给值:MmUserProbeAddress
没搞明白,你用什么好方法不?xt什么的一用就蓝

点评

亲测最新版的XT是不会有这个问题的  发表于 2017-2-5 04:30
亲测最新版的XT是不会有这个问题的  发表于 2017-2-5 04:30

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

发表于 2017-2-5 21:30 | 显示全部楼层
哥唉还是上次哪个CF遍历模块的问题,我在论下载最新的PC HunterV1.51,开游戏后再开PC Hunter。Hunter卡住不动了,你有好用的XT介绍个?

点评

给你个好建议 重装游戏 先开xuetr 然后进游戏就可以了  发表于 2017-2-5 22:57

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

发表于 2017-1-12 08:57 | 显示全部楼层

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

发表于 2017-1-12 09:09 | 显示全部楼层
好像很厉害的样子

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

发表于 2017-1-12 10:56 | 显示全部楼层
很厉害,佩服。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

发表于 2017-1-12 11:16 来自手机 | 显示全部楼层
大神厉害

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

发表于 2017-1-12 11:16 来自手机 | 显示全部楼层
感谢大佬的分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

发表于 2017-1-12 11:24 | 显示全部楼层
*讯的TenP*么?
好厉害的样子。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

发表于 2017-1-12 11:24 | 显示全部楼层
虽然不懂,但看起来好厉害啊!!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

发表于 2017-1-12 13:51 | 显示全部楼层
哈哈,分析的不错

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

发表于 2017-1-12 13:51 | 显示全部楼层
分析的非常棒

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

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

本版积分规则


免责声明:
吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

Mail To:Service@52PoJie.Cn

快速回复 收藏帖子 返回列表 搜索

RSS订阅|手机版|小黑屋|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2017-5-29 15:35

Powered by Discuz!

© 2001-2017 Comsenz Inc.

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