TP双击调试
1: 先用VirtualKD连接虚拟机,然后进入游戏2: kd> bp KdDisableDebugger (对KdDisableDebugger下断)
3: kd> eb KdDisableDebugger 0xc3 (直接修改函数头,让其返回,按F10)
返回后结果:
ee0abfca a16ccb0bee mov eax,dword ptr
ee0abfcf 8b0d68cb0bee mov ecx,dword ptr
ee0abfd5 56 push esi
ee0abfd6 8b7028 mov esi,dword ptr
ee0abfd9 57 push edi
ee0abfda 8b782c mov edi,dword ptr
ee0abfdd 33f1 xor esi,ecx
ee0abfdf 33f9 xor edi,ecx
ee0abfe1 eb4b jmp TesSafe+0x702e (ee0ac02e)
ee0abfe3 803d6d820bee00cmp byte ptr ,0
ee0abfea 7516 jne TesSafe+0x7002 (ee0ac002)
ee0abfec 688a4d6e43 push 436E4D8Ah
ee0abff1 6876426e57 push 576E4276h
ee0abff6 e873caffff call TesSafe+0x3a6e (ee0a8a6e)
ee0abffb c6056d820bee01mov byte ptr ,1
ee0ac002 85ff test edi,edi
ee0ac004 7404 je TesSafe+0x700a (ee0ac00a)
ee0ac006 ffd7 call edi //edi=KdDisableDebugger
ee0ac008 eb24 jmp TesSafe+0x702e (ee0ac02e) //返回后直接跳转
ee0ac00a 803d6e820bee00cmp byte ptr ,0
ee0ac011 751b jne TesSafe+0x702e (ee0ac02e)
ee0ac013 6812010000 push 112h
ee0ac018 68e64d6e43 push 436E4DE6h
ee0ac01d 6873426e57 push 576E4273h
ee0ac022 e865caffff call TesSafe+0x3a8c (ee0a8a8c)
ee0ac027 c6056e820bee01mov byte ptr ,1
ee0ac02e 803e00 cmp byte ptr ,0 //跳转至此,判断 >= 0 (esi为KdDebuggerEnabled可通过dd KdDebuggerEnabled查看)
ee0ac031 75b0 jne TesSafe+0x6fe3 (ee0abfe3) //第一处需要修改的地方 改为je
ee0ac033 5f pop edi
ee0ac034 5e pop esi
ee0ac035 c3 ret
4.kd> eb TesSafe+0x7031 0x74
5.kd> g
还会断下,断下之后按F10
ee084112 a16c4b09ee mov eax,dword ptr
ee084117 8b402c mov eax,dword ptr
ee08411a 3305684b09ee xor eax,dword ptr
ee084120 7404 je TesSafe+0x7126 (ee084126)
ee084122 ffd0 call eax //call KdDisableDebugger
ee084124 eb24 jmp TesSafe+0x714a (ee08414a)
ee084126 803d720209ee00cmp byte ptr ,0
ee08412d 751b jne TesSafe+0x714a (ee08414a)
ee08412f 6882010000 push 182h
ee084134 68e64d6e43 push 436E4DE6h
ee084139 6873426e57 push 576E4273h
ee08413e e849c9ffff call TesSafe+0x3a8c (ee080a8c)
ee084143 c605720209ee01mov byte ptr ,1
ee08414a 8b0d640209ee mov ecx,dword ptr
ee084150 85c9 test ecx,ecx //u ecx = KiDebugRoutine
ee084152 740f je TesSafe+0x7163 (ee084163)
ee084154 a1680209ee mov eax,dword ptr
ee084159 85c0 test eax,eax //u eax = KdpStub
ee08415b 7406 je TesSafe+0x7163 (ee084163) //第二处需要修改的地方 改为jmp
ee08415d 3901 cmp dword ptr ,eax
ee084163 c3 ret
伪代码
if(KiDebugRoutine != null && KdpStub != null)
{
KiDebugRoutine= KdpStub; //正常情况下 KiDebugRoutine= KdpTrap
}
6.kd> eb TesSafe+0x715f 0xeb
总结(使用下面3条命令就行):
eb KdDisableDebugger 0xc3
eb TesSafe+0x7031 0x74
eb TesSafe+0x715f 0xeb
用VirtualKD 本来就能双机调试了为何还要去修改呢 亲
页:
[1]