易语言教程_易语言源码_易语言视频教程_易语言论坛

 找回密码
 点击注册

Vip新手入门区
新手学习指南  学员作品展示 Vip课程总纲  Vip绝密课程系列

Vip相关下载区
Vip模块下载   Vip模块绑定   Vip模块例子 魔鬼插件下载  魔鬼插件例子  教程工具下载

Vip论坛服务区
教程问题提问区   模块问题提问区 技术交流区   魔鬼插件建议   忘记密码找回

VIP会员办理QQ: 8643245   
【请先加好友,然后到好友列表双击联系客服,办理VIP会员。】
【基础篇】易语言辅助入门基础教程
VIP模块办理QQ: 7189694 办理正版魔鬼作坊VIP模块 【基础篇】OD与CE入门基础教程
办理【终身VIP会员】“秒杀价” 仅需 RMB278.00元… 【基础篇】零基础绝密汇编语言入门课程 (共26课已完成)…
办理VIP详情…猛击这里查看详情 【基础篇】VIP辅助入门基础教程-新手必学 已发布10课 ……
VIP教程免费试看章节…猛击下载 【第1款】制作“辅助挂”教程目录查看(共107+16_x64下更新课已完成)…
亲爱的VIP学员,请到此写下你学习的感受与发布作品截图… 【第2款】制作“任务挂”教程目录查看(共77+1_x64下更新课已完成)…
卍解吧!不用bp send类封包断点找CALL的各种通杀思路 【第3款】驱动过保护技术课程(共38课已完成)…
【绝密教程】VIP绝密教程系列---注意:随时会更新! 【第4款】VIP邪恶二叉树辅助课程 (共31+17_x64下更新课已完成)…
【精品第13款】3D射击游戏与页游透视 智辅课程 已完成17课… 【第5款】零基础易语言按键辅助教程 (30课已完成)…
【精品第14款】变态功能辅助是如何炼成的 已完成36课… 【第6款】从零开始学习封包辅助技术教程(20课已完成) …
【精品第15款】DNF商业变态辅助的修炼之路 已完成27课… 【第7款】大杀特杀分析来源与CALL吸血鬼课程 (56课已完成)
【精品第16款】中控台多线程多开自动化商业辅助课程 已完成66课… 【第8款】完全零基础网页辅助课程(40课已完成)
【全新精品第17款】检测原理与过游戏内存检测技术课程 已发布9课… 【第9款】自动登录与操控LUA技术课程 (共46+8_x64下更新课已完成)…
【全新精品第18款】手游全自动化任务脚本辅助课程 已发布25课…… 【第10款】网页辅助封包脱机进阶课程 已完成30课…
【全新精品第19款】D3D方框骨骼透视与自瞄辅助课程进阶篇 已发布34课…… 【第11款】VC++ Lua脚本辅助课程 已完成112课…
【全新精品第20款】 X64模拟器吃鸡游戏方框透视自瞄辅助课程 发布中... 【第12款】网游脱机封包智辅课程 已完成35课…
查看: 12165|回复: 12

真正完美过TP保护plus2_双机调试过KdDisableDebugger函数的检测

[复制链接]

54

主题

98

回帖

130

积分

终身VIP会员

花钱是让你服务的,不是叫你大哥 ...

Rank: 7Rank: 7Rank: 7

魔鬼币
10632
发表于 2011-8-15 19:04:08 | 显示全部楼层 |阅读模式
KdDisableDebugger 函数 (防止双机调试)

首先在打开虚拟机VMWARE,然后本机打开双机调试版WINDBG。

在windbg上下断点命令:bp KdDisableDebugger,进入虚拟机内,打开游戏,WINDBG断下。

nt!KdDisableDebugger(检测双机调试函数):
804f8876 8bff            mov     edi,edi     //首地址
804f8878 55              push    ebp
804f8879 8bec            mov     ebp,esp
804f887b 51              push    ecx
804f887c b102            mov     cl,2
804f887e ff152c904d80    call    dword ptr [nt!_imp_KfRaiseIrql (804d902c)]
804f8884 8845ff          mov     byte ptr [ebp-1],al
804f8887 e81c010000      call    nt!KdpPortLock (804f89a8)
804f888c 833d486a558000  cmp     dword ptr [nt!KdDisableCount (80556a48)],0
804f8893 753a            jne     nt!KdDisableDebugger+0x59 (804f88cf) // KdDisableDebugger+0x1d
//第一次进入时,jne跳转没有实现(未修改);
804f8895 a0416a5580      mov     al,byte ptr [nt!KdDebuggerEnabled (80556a41)]
804f889a 84c0            test    al,al
804f889c 7510            jne     nt!KdDisableDebugger+0x38 (804f88ae) // KdDisableDebugger+0x26
//第一次进入时,jne跳转实现(修改后);
804f889e 803dfce6548000  cmp     byte ptr [nt!KdPitchDebugger (8054e6fc)],0
804f88a5 c6054c6a558001  mov     byte ptr [nt!KdPreviouslyEnabled (80556a4c)],1
804f88ac 7407            je      nt!KdDisableDebugger+0x3f (804f88b5)
//第一次没有经过这个跳转;
804f88ae c6054c6a558000  mov     byte ptr [nt!KdPreviouslyEnabled (80556a4c)],0
804f88b5 84c0            test    al,al
804f88b7 7516            jne     nt!KdDisableDebugger+0x59 (804f88cf)  // KdDisableDebugger+0x41
//第一次进入时,jne跳转实现(修改后);
804f88b9 e8d23d1700      call    nt!KdpSuspendAllBreakpoints (8066c690)
804f88be c70564d655806c8d4f80 mov dword ptr [nt!KiDebugRoutine (8055d664)],offset nt!KdpStub (804f8d6c)

*eb为机器码写入;
接着我们下eb nt!KdDisableDebugger+26 75;eb nt!KdDisableDebugger+41;eb nt!KdDisableDebugger+1d 74; eb nt!KdDisableDebugger+36 75命令,这是一条复合命令,即将上面改变上面四个跳转。
接着F10往下走,直到RETN的时候,我们r eax(EAX为函数的返回值,eax=0代表KdDisableDebugger返回失败,即可以进行双击调试)。继续F10,函数返回,走到一条判断命令处,我们下 eb TesSafe+5069 74断点,接着往下走,
到这里:
// call    TesSafe+0x26dc (ee0d66dc)
ee0d66dc a18c3e0eee      mov     eax,dword ptr [TesSafe+0xfe8c (ee0e3e8c)] //EAX=85DC1958
kd> u ee0d66dc L30
TesSafe+0x26dc:
ee0d66dc a18c3e0eee      mov     eax,dword ptr [TesSafe+0xfe8c (ee0e3e8c)] //EAX=804F872E
ee0d66e1 8b402c          mov     eax,dword ptr [eax+2Ch]
ee0d66e4 3305883e0eee    xor     eax,dword ptr [TesSafe+0xfe88 (ee0e3e88)] //EAX=804F8876
ee0d66ea 7402            je      TesSafe+0x26ee (ee0d66ee)  //修改为 75,跳过KeDisableDebugger函数
ee0d66ec ffd0            call    eax  // KeDisableDebugger函数
ee0d66ee 8b0dac0e0eee    mov     ecx,dword ptr [TesSafe+0xceac (ee0e0eac)]
ee0d66f4 85c9            test    ecx,ecx
ee0d66f6 740f            je      TesSafe+0x2707 (ee0d6707) // TesSafe+26f6

ee0d66f8 a1b00e0eee      mov     eax,dword ptr [TesSafe+0xceb0 (ee0e0eb0)]
ee0d66fd 85c0            test    eax,eax
ee0d66ff 7406            je      TesSafe+0x2707 (ee0d6707) //// TesSafe+26ff
ee0d6701 3901            cmp     dword ptr [ecx],eax    //[ECX]=8066D1F8,EAX=804F8D6C

ee0d6703 7402            je      TesSafe+0x2707 (ee0d6707)  // TesSafe+2703,跳转处理
ee0d6705 8901            mov     dword ptr [ecx],eax
ee0d6707 c3              ret

执行 eb TesSafe+2703 75,即将地址ee0d6703处的第一个机器码74变成75;
至此,已经过掉所有的检测 KeDisableDebugger的跳转。

大家也可以直接下 eb nt!KdDisableDebugger+26 75;eb nt!KdDisableDebugger+41 75;eb TesSafe+5069 74; eb TesSafe+2703 75;eb nt!KdDisableDebugger+1d 74; eb nt!KdDisableDebugger+36 75断点。

评分

参与人数 1魔鬼币 +50 收起 理由
魔鬼作坊内部组 + 50 精品文章

查看全部评分

12

主题

90

回帖

72

积分

终身VIP会员

Rank: 7Rank: 7Rank: 7

魔鬼币
36315
发表于 2011-8-16 11:01:28 | 显示全部楼层
神人 膜拜...

0

主题

3

回帖

2

积分

编程入门

Rank: 1

魔鬼币
19
发表于 2011-10-1 19:42:00 | 显示全部楼层
主要是能写成易代码

0

主题

5

回帖

-3

积分

编程新手

Rank: 1

魔鬼币
97
发表于 2012-1-5 17:33:14 | 显示全部楼层
好东西支持

0

主题

1

回帖

13

积分

编程入门

Rank: 1

魔鬼币
13
发表于 2012-2-11 10:58:54 | 显示全部楼层
你的q是多少啊!,我双机调试遇到些问题,想请教一下,可以吗

24

主题

59

回帖

1万

积分

终身VIP会员

Rank: 7Rank: 7Rank: 7

魔鬼币
12728
发表于 2012-2-21 17:44:41 | 显示全部楼层
不错不错,,暂时看不懂。。。

0

主题

4

回帖

-5

积分

编程新手

Rank: 1

魔鬼币
95
发表于 2012-8-30 14:15:36 | 显示全部楼层
膜拜呀
......

21

主题

45

回帖

54

积分

终身VIP会员

Rank: 7Rank: 7Rank: 7

魔鬼币
21302
发表于 2012-9-14 19:12:03 | 显示全部楼层
好东西值得顶

12

主题

26

回帖

31

积分

终身VIP会员

Rank: 7Rank: 7Rank: 7

魔鬼币
22251
发表于 2012-10-2 19:32:15 | 显示全部楼层
经典 过了再回来答谢

0

主题

1

回帖

-7

积分

编程新手

Rank: 1

魔鬼币
93
发表于 2013-3-20 18:51:27 | 显示全部楼层
看不明白/////////////////////
您需要登录后才可以回帖 登录 | 点击注册

本版积分规则

魔鬼作坊|易语言教程|易语言源码|易语言论坛|易语言视频教程| 论坛导航|免责申明|手机版||网站地图
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表魔鬼作坊立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2010-2019 All Right Reserved.
快速回复 返回顶部 返回列表