标签:
32位XP虚拟机,过TP的反调试。其实我也想试试Win7 X64下的TP的。奈何电脑带Win7虚拟机都卡成狗了,更别说运行游戏了。计划这个清明加根内存条,然后再试试X64 的TP
言归正传。如果XP处于 DEBUG 模式,一开TP会直接蓝屏的。逆过早期的TP都知道TP是不停的调用KdDisableDebugger 函数来清零 KdDebuggerEnabled 来防止反调试。
基础知识
《软件调试》上的Windows启动过程
可以看到系统一共调用了两次KdInitSystem()函数
第一次调用KdInitSystem() 会初始化全局变量
kd> dd KdPitchDebugger 80546efc 00000000 00000000 00000000 00000000 kd> dd KdDebuggerEnabled 8054d4c1 01000001 00000000 00000000 01000000 kd> dd kiDebugRoutine 80553f04 80661a06 00000000 7c92e4a8 7c92e45c kd> u 80661a06 nt!KdpTrap: 80661a06 8bff mov edi,edi 80661a08 55 push ebp 80661a09 8bec mov ebp,esp 80661a0b 51 push ecx 80661a0c 51 push ecx 80661a0d 8b4510 mov eax,dword ptr [ebp+10h] 80661a10 813803000080 cmp dword ptr [eax],80000003h 80661a16 56 push esi
早期的TP是靠循环来清零 KdDebuggerEnabled 0 来达到防止调试的目的,依照这个思路,做以下尝试
先将KdPitchDebugger 置为1 kd> ed KdPitchDebugger 1 kd> dd KdPitchDebugger 80546efc 00000001 00000000 00000000 00000000 然后设置KiDebugRoutine 指向的指针 从KdpTrap 改成 KdpStub kd> dd KiDebugRoutine 80553f04 80661a06 00000000 7c92e4a8 7c92e45c kd> u 80661a06 nt!KdpTrap: 80661a06 8bff mov edi,edi 80661a08 55 push ebp 80661a09 8bec mov ebp,esp 80661a0b 51 push ecx 80661a0c 51 push ecx 80661a0d 8b4510 mov eax,dword ptr [ebp+10h] 80661a10 813803000080 cmp dword ptr [eax],80000003h 80661a16 56 push esi kd> u KdpStub nt!KdpStub: 804f7c76 8bff mov edi,edi 804f7c78 55 push ebp 804f7c79 8bec mov ebp,esp 804f7c7b 8b4510 mov eax,dword ptr [ebp+10h] 804f7c7e 813803000080 cmp dword ptr [eax],80000003h 804f7c84 7525 jne nt!KdpStub+0x35 (804f7cab) 804f7c86 83781000 cmp dword ptr [eax+10h],0 804f7c8a 761f jbe nt!KdpStub+0x35 (804f7cab) kd> ed KiDebugRoutine 804f7c76 kd> dd KiDebugRoutine 80553f04 804f7c76 00000000 7c92e4a8 7c92e45c 最后恢复KdDebuggerEnabled 为 0。因为如果先恢复KdDebuggerEnabled的值会使 WinDbg接收不到消息,所以最后才赋值,赋值之后我们再Debug?Break(Ctrl+Break)已经没反应了 kd> ed KdDebuggerEnabled 0
附上看雪原地址
http://bbs.pediy.com/showthread.php?t=196149&viewgoodnees=1&prefixid=
http://bbs.pediy.com/showthread.php?t=186091
运行TP,逗比的是TP居然过了,但是,自己的Windbg也废了,断点下不上了。等我功力更深厚了,内存条加了再来补充
标签:
原文地址:http://www.cnblogs.com/lanrenxinxin/p/4378218.html