|
欢迎您注册加入!这里有您将更精采!
您需要 登录 才可以下载或查看,没有账号?注册
x
1: 先用VirtualKD连接虚拟机,然后进入游戏
2: kd> bp KdDisableDebugger (对KdDisableDebugger下断)
3: kd> eb KdDisableDebugger 0xc3 (直接修改函数头,让其返回,按F10)
返回后结果:
ee0abfca a16ccb0bee mov eax,dword ptr [TesSafe+0x17b6c (ee0bcb6c)]
ee0abfcf 8b0d68cb0bee mov ecx,dword ptr [TesSafe+0x17b68 (ee0bcb68)]
ee0abfd5 56 push esi
ee0abfd6 8b7028 mov esi,dword ptr [eax+28h]
ee0abfd9 57 push edi
ee0abfda 8b782c mov edi,dword ptr [eax+2Ch]
ee0abfdd 33f1 xor esi,ecx
ee0abfdf 33f9 xor edi,ecx
ee0abfe1 eb4b jmp TesSafe+0x702e (ee0ac02e)
ee0abfe3 803d6d820bee00 cmp byte ptr [TesSafe+0x1326d (ee0b826d)],0
ee0abfea 7516 jne TesSafe+0x7002 (ee0ac002)
ee0abfec 688a4d6e43 push 436E4D8Ah
ee0abff1 6876426e57 push 576E4276h
ee0abff6 e873caffff call TesSafe+0x3a6e (ee0a8a6e)
ee0abffb c6056d820bee01 mov byte ptr [TesSafe+0x1326d (ee0b826d)],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 803d6e820bee00 cmp byte ptr [TesSafe+0x1326e (ee0b826e)],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 c6056e820bee01 mov byte ptr [TesSafe+0x1326e (ee0b826e)],1
ee0ac02e 803e00 cmp byte ptr [esi],0 //跳转至此,判断[esi] >= 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 [TesSafe+0x17b6c (ee094b6c)]
ee084117 8b402c mov eax,dword ptr [eax+2Ch]
ee08411a 3305684b09ee xor eax,dword ptr [TesSafe+0x17b68 (ee094b68)]
ee084120 7404 je TesSafe+0x7126 (ee084126)
ee084122 ffd0 call eax //call KdDisableDebugger
ee084124 eb24 jmp TesSafe+0x714a (ee08414a)
ee084126 803d720209ee00 cmp byte ptr [TesSafe+0x13272 (ee090272)],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 c605720209ee01 mov byte ptr [TesSafe+0x13272 (ee090272)],1
ee08414a 8b0d640209ee mov ecx,dword ptr [TesSafe+0x13264 (ee090264)]
ee084150 85c9 test ecx,ecx //u ecx = KiDebugRoutine
ee084152 740f je TesSafe+0x7163 (ee084163)
ee084154 a1680209ee mov eax,dword ptr [TesSafe+0x13268 (ee090268)]
ee084159 85c0 test eax,eax //u eax = KdpStub
ee08415b 7406 je TesSafe+0x7163 (ee084163) //第二处需要修改的地方 改为jmp
ee08415d 3901 cmp dword ptr [ecx],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
|
|