TP的debugport的另一种过法
继上一次过掉双击调试之后,利用它的思想,又相继过掉了那几个函数和debugport。刚才在虚拟机里面,OD加载之后,有模块,可下段,没又sx非法之类报错。但是过了一会游戏退出了。不知道是不是跟我虚拟机配置不够有关?总之能调试附加,给我这新人一大信心。
开始说debugport的过法。看了以前好多帖子,都是修改TP,最近,有人也是修改TP,另外pass crc校验。我不会找crc校验,希望有大牛来指点我一下。
于是另外想了一种办法。
先上反汇编代码:
b0dc627e 895c3804 mov dword ptr ,ebx
b0dc6282 8b3dc472ddb0 mov edi,dword ptr
b0dc6288 8b7f1c mov edi,dword ptr
b0dc628b 0379b8 add edi,dword ptr
b0dc628e 33c0 xor eax,eax
b0dc6290 ab stos dword ptr es:
b0dc6291 ab stos dword ptr es:
b0dc6292 8b3dc472ddb0 mov edi,dword ptr
b0dc6298 8b7f04 mov edi,dword ptr
b0dc629b 0379b8 add edi,dword ptr
b0dc629e 33c0 xor eax,eax
b0dc62a0 8707 xchg eax,dword ptr //这里清0
一处清零的地方。我从上面跟下来,发现,debugport的偏移0xbc让他存在了一个局部变量中。
那么,跟到这个局部变量赋值的地方。
b0e6XXXX 0f85d2000000 jne TesXXXX+0x783c (b0e6XXXX)
b0e6XXXX 8b4508 mov eax,dword ptr
b0e6XXXX c74004bc000000mov dword ptr ,0BCh//这里赋值。
b0e6XXXX c7400c30010000mov dword ptr ,130h
b0e6XXXX c74010a0010000mov dword ptr ,1A0h
b0e6XXXX c7004c020000 mov dword ptr ,24Ch
b0e6XXXX c740141c010000mov dword ptr ,11Ch
这段代码大体意思,判断当前系统版本。然后会给一些偏移。。。别的不管,我只管0xbc
然后,我可以在b0e6XXXX c7400c30010000mov dword ptr ,130h
下硬件断点。然后HOOK INT1 中断。然后悄无声息的将eax+4的内容改为别的。我发现118这个偏移不错。
然后。。。。某P开始疯狂对这个地址清0.
好了。想法就是这样。(之前有人说到律师函之类,所以锁了一些修饰。希望不会引火。)
上代码:
下硬件断点。
__asm
{
mov eax,hookaddr
mov DR0,eax
mov eax,2
mov DR7,eax
}
void __declspec (naked) My_Kitrap1()
{
_asm
{
//保存环境;
pushfd
pushad
mov ebx,eax
mov ecx,XxxPBASE
add ecx,0x7774
mov eax,dr0
cmp eax,ecx
jne jmpoldtrap01
mov eax,dr6
and eax,1
cmp eax,1
jne jmpoldtrap01
mov word ptr ,0x118
mov eax,0
mov dr0,eax
popad
popfd
iretd
jmpoldtrap01:
popad
popfd
push0
mov word ptr ,0
jmp originalkitrap1addrjmpaddr
}
}
大体 就这样吧。
页:
[1]