看雪论坛
主题:186762  回帖:1214879  会员:741294  在线:1551

【讨论】tP anti硬件断点

lovenikola 2016-4-7 3518
最近研究硬件断点及绕过检测 但遇到了一些问题-.-:eek::eek:
尝试方法如下
一.
1.Hook KiUserExceptionDispatcher
2.Hook NTcontinue
3.Hook ZwGetContextThread
2.调用SetThreadContext [msv90]设置新Dr寄存器并保存旧Dr寄存器
3.在调用RtlDispatchException 前还原了[msv90]旧Dr寄存器
4.再调用NTcontinue前 获取[msv90]Context并保存旧Dr寄存器 然后再设回新Dr寄存器
5. On ZwGetContextThread 返回[msv90]旧Dr寄存器 (如果被调用了说明已经被检测到了 这里游戏只是再采集上传我下的哪个断点)

失败告终 不知道什么原因还是被检测了:eek:
二.
1.Hook KiUserExceptionDispatcher
2.安装VEH 并接管异常
3.创建一个线程 无限抛C5异常 (我的VEH不处理该异常,反正没崩)
4.invok SetThreadContext 断点

该方法有40%的概率不被检测 也就是说-。- 每次启动程序后如果不被检测 后面随便怎么折腾都可以了 不知道啥原因

:3::3: 请教各位大神 给些提议吧:o:
最新回复 (14)
lovenikola 2016-4-7
2
发现一个神奇的事
游戏自己的KiUserExceptionDispatcher函数中  0xxxxxxx= NTcontinue 如果将 call dword[0xxxxxxx] JMP到 ntdll KiUserExceptionDispatcher中的 call NTcontinue  游戏会检测到硬件断点 (已排除CRC可能)
天涯何处 2016-4-7
3
看不懂!先顶一下吧
lovenikola 2016-4-9
4
经过分析 只要我用SetThreadContext 改变了它的DR寄存器 就会被检测到
-。- 我怀疑是R0在检测 或者自身线程有个定时器之类的东西在检查寄存器
核心未拥有 2016-4-9
5
他一启动就设置完了,你再修改,读取发现不是自己的地址,就死了
lovenikola 2016-4-9
6
是的 暂时想不到解决办法了:(:
yy虫子yy 2016-4-9
7
硬断被它自己给占坑了
Callback 2016-4-25
8
CRC阿CRC
1
落笔飞花 2016-4-25
9
就提醒一句。X64上TP的DR调试寄存器检测是 伪占坑。他读取的东西不是他想要的 就卡死然后退出。如果是就没事儿。做个链表保存起来- -还有。。你这些方法都不是关键点。我很久之前搞得。忘了。懒得翻代码。
cenaiyi 2016-4-26
10
我尝试过在TP占坑的4个位置int3并且清空drx,在接受到后恢复并且继续执行,但是这样做仍然被检测,游戏占坑的位置被加密过,不知道怎么去分析,请教大神该怎么处理呢。
mmovve 2016-4-26
11
同样在研究这块,关注一下~
小阿弟 2016-4-26
12
设计TP的那帮人有马--化---腾,花大把钱养着 , 它们有着雄厚财力支撑的不断更新完善TP保护 , 如果没有一定财力支持 , 还是先搞多点钱 , 在来虐待设计TP的那帮人吧 ,

<<----------老实说光是比财力 , 就输了 。 每次更新 ,破解者都得花大把时间来逆向分析 ,这时间也是钱啊, <时间就是金钱 ,我的朋友>...:(:
生于远虑 2017-1-1
13
哈哈 tp很难搞
itiansin 2017-1-12
14
其实腾讯这个检测一点都不严  他只不过就是自己占了坑 自己处理异常 如果你把他占的坑干掉 肯定就会异常 因为程序执行流程被你改变了
aimhack 2017-1-13
15
在15年年底,TP都会自己占坑了~
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 知道创宇带宽支持 | 微信公众号:ikanxue
Time: 0.011, SQL: 7 / 京ICP备10040895号-17