欢迎来到天天文库
浏览记录
ID:36229683
大小:507.00 KB
页数:11页
时间:2019-05-07
《过tp的双机调试》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、过TP的双机调试:KdDisableDebugger//调用了该函数禁止双机调试KdSendPacket//对该函数进行HOOKKdRecvPacket//对该函数进行HOOK,这两个函数是物理机与虚拟机发送与接收数据的函数TP针对双机调试做了如上处理。KdSendPacket、KdRecvPacket他们俩是双机调试时收发调试信息的,TP处理掉了他们。意味着windbg的调试信息无法发送至调试系统。KdDisableDebugger,TP会直接调用它,关闭掉内核调试。至于收发调试信息,不管了。处理它俩挺麻烦的。
2、可以用工具代替。VirtualKD这个工具辅助双机调试的。自己实现了调试信息收发。用他代替就可以了,调试反应速度还蛮快的。有他就不用处理KdSendPacket,KdRecvPacket了。只剩下KdDisableDebugger了,那就不让TP调用呗,直接给返回了,仅仅这样当然不行,TP还会自己实现KdDisableDebugger的函数,所以只是单纯让他返回不行。本教程针对DNF来测试,DNF共调用了两个版本的TP,登陆前调用了一次,登陆后还调用了一次,因此要过它的双机调试就要过两次。先来看一下windows
3、泄露的代码中KdDisableDebugger函数的实现吧:KdDisableDebugger(VOID){KIRQLoldIrql;KeRaiseIrql(DISPATCH_LEVEL,&oldIrql);KdpPortLock();if(!KdDisableCount){KdPreviouslyEnabled=KdDebuggerEnabled&&(!KdPitchDebugger);if(KdDebuggerEnabled)//KdDebuggerEnabled值为1则在调试状态{KdpSuspendAll
4、Breakpoints();KiDebugRoutine=KdpStub;//对KiDebugRoutine写入KdpStub值表示禁止调试KdDebuggerEnabled=FALSE;//KdDebuggerEnabled值为0则为禁止调试状态}}KdDisableCount++;KdpPortUnlock();KeLowerIrql(oldIrql);}开启虚拟机,首先用windbg下断点:bpKdDisableDebugger,然后在虚拟机中开启游戏,在TP调用该函数时断了下来,可以用Alt+7来打开反汇
5、编窗口:nt!KdDisableDebugger:804f74388bffmovedi,edi//断在了这里,也就是函数的首地址804f743a55pushebp804f743b8becmovebp,esp804f743d51pushecx804f743eb102movcl,2804f7440ff15f4864d80calldwordptr[nt!_imp_KfRaiseIrql(804d86f4)]804f74468845ffmovbyteptr[ebp-1],al804f7449e81c010000calln
6、t!KdpPortLock(804f756a)804f744e833dc8c6548000cmpdwordptr[nt!KdDisableCount(8054c6c8)],0804f7455753ajnent!KdDisableDebugger+0x59(804f7491)804f7457a0c1c65480moval,byteptr[nt!KdDebuggerEnabled(8054c6c1)]804f745c84c0testal,al804f745e7410jent!KdDisableDebugger+0x3
7、8(804f7470)804f7460803dfc60548000cmpbyteptr[nt!KdPitchDebugger(805460fc)],0804f7467c605ccc6548001movbyteptr[nt!KdPreviouslyEnabled(8054c6cc)],1804f746e7407jent!KdDisableDebugger+0x3f(804f7477)804f7470c605ccc6548000movbyteptr[nt!KdPreviouslyEnabled(8054c6cc)],
8、0804f747784c0testal,al804f74797416jent!KdDisableDebugger+0x59(804f7491)804f747be89e791600callnt!KdpSuspendAllBreakpoints(8065ee1e)804f7480c705e430558022794f80movdwordptr[nt!KiDebugRoutine
此文档下载收益归作者所有