首页
社区
课程
招聘
[讨论]对双机调试的困惑
发表于: 2015-4-2 00:13 7596

[讨论]对双机调试的困惑

2015-4-2 00:13
7596
最近学习调试内核方面的知识,就先拿某P下刀,系统是XP 
    根据之前大牛发表的帖子,驱动加载之后,会对KdSendPacket和KdReceivePacket这两个函数IAT HOOK,可是用XT检测了一下,没有HOOK

然后退出游戏,并且卸载了某P驱动,windbg按ctrl+break断不下来....它调用了KdDisableDebugger,那我就手动修改了KdDebuggerEnabled为1,KiDebugRoutine指向KdpTrap,之后按ctrl+break仍然断不下来.windbg显示:
Send Break in ...
READ: Wait for type 7 packet
>>>> ReadAll(0x800703E3,1,0) fails.
READ: Timeout.

每当发生时钟中断,会调用到KeUpdateSystemTime,该函数检测KdDebuggerEnabled的值,不为0,则调用KdPollBreakIn,后者再调用KdReceivePacket,根据packet,回复windbg

百思不得其解,莫非某P对其他地方做了手脚,让windbg收不到pakcet,或者让内核调试引擎发不了packet?

问题二:用windbg在游戏加载前对KdDisableDebugger下断,虚拟机卡住,之后用virtualkd双机调试,加载游戏之前,先bp KdDisableDebugger,然后断下来了,将函数头部直接ret,返回后,看到如下代码
edf0318e 8b0424          mov     eax,dword ptr [esp]
edf03191 e9adcd0100      jmp     edf1ff43
edf03196 7b8d            jnp     edf03125
edf03198 642404          and     al,4
edf0319b ffd6            call    esi                   //此处调用KdDisableDebugger
edf0319d e96d99ffff      jmp     edefcb0f
edf031a2 e25b            loop    edf031ff
edf031a4 5b              pop     ebx
edf031a5 893c24          mov     dword ptr [esp],edi
edf031a8 8b3c24          mov     edi,dword ptr [esp]
edf031ab 89bc2404000000  mov     dword ptr [esp+4],edi
edf031b2 50              push    eax
edf031b3 c7c07cdcc63a    mov     eax,3AC6DC7Ch
edf031b9 8d80b4659313    lea     eax,[eax+139365B4h]

为什么用windbg对KdDisableDebugger下断虚拟机卡住,virtualKD却不会呢?
这边的汇编代码和以前帖子贴出来的代码变化很大.....看大牛贴出来的代码,汇编的代码要干什么,还是能知道的.现在是

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 345
活跃值: (57)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
virtualKD自己实现了一套收发包的功能!
2015-4-2 09:53
0
雪    币: 237
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
坐等大神回复
2015-4-2 11:39
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
某P显然已经开始对KDCOM内部动了手脚,所以KdReceivePacket、KdSendPacket无法使用.这两个函数无法使用就无法下断。
2015-4-3 13:50
0
雪    币: 31
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
会不会对那两个函数内部动手脚?KdReceivePacket->KdpReceiveString->CpGetByte,对此函数CpGetByte的参数,命名管道这个参数修改?有时间我再逆一下
2015-4-3 15:52
0
雪    币: 1098
活跃值: (746)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
我也调试了一下*P的双机调试 情况和你一样 没有对发包函数进行Hook,不知道它对内部的什么做了手脚导致无法暂停或下断
2015-4-5 12:41
0
雪    币: 28
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
以前看个帖子 对KDCOM.dll 整个内存对比,发现对KDCOM有修改的地方,造成的无法双机。估计是数据结构动手脚
2015-4-7 17:13
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
加扣扣一起学习驱动2386847899,那个你是方法不对吧,现在他更新了连下断机会的没,直接让你重启
2015-4-28 19:52
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
求贴子地址看一看
2015-6-24 13:55
0
雪    币: 33
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
求帖子地址
2015-7-14 16:48
0
游客
登录 | 注册 方可回帖
返回
//