- 注册时间
 - 2021-4-16
 
- 最后登录
 - 2024-8-22
 
- 在线时间
 - 5 小时
 
 
 
 
 
编程入门 
  
	- 龙马币
 - 116 
 
 
 
 
 | 
 
继上一次过掉双击调试之后,利用它的思想,又相继过掉了那几个函数和debugport。刚才在虚拟机里面,OD加载之后,有模块,可下段,没又sx非法之类报错。 
 
但是过了一会游戏退出了。不知道是不是跟我虚拟机配置不够有关?总之能调试附加,给我这新人一大信心。 
 
开始说debugport的过法。看了以前好多帖子,都是修改TP,最近,有人也是修改TP,另外pass crc校验。我不会找crc校验,希望有大牛来指点我一下。 
于是另外想了一种办法。 
 
先上反汇编代码: 
- b0dc627e 895c3804        mov     dword ptr [eax+edi+4],ebx
 
 - b0dc6282 8b3dc472ddb0    mov     edi,dword ptr [TesXXXX+0x132c4 (b0dd72c4)]
 
 - b0dc6288 8b7f1c          mov     edi,dword ptr [edi+1Ch]
 
 - b0dc628b 0379b8          add     edi,dword ptr [ecx-48h]
 
 - b0dc628e 33c0            xor     eax,eax
 
 - b0dc6290 ab              stos    dword ptr es:[edi]
 
 - b0dc6291 ab              stos    dword ptr es:[edi]
 
 - b0dc6292 8b3dc472ddb0    mov     edi,dword ptr [TesXXXX+0x132c4 (b0dd72c4)]
 
 - b0dc6298 8b7f04          mov     edi,dword ptr [edi+4]
 
 - b0dc629b 0379b8          add     edi,dword ptr [ecx-48h]
 
 - b0dc629e 33c0            xor     eax,eax
 
 - b0dc62a0 8707            xchg    eax,dword ptr [edi]//这里清0
 
  复制代码 
一处清零的地方。我从上面跟下来,发现,debugport的偏移0xbc让他存在了一个局部变量中。 
 
那么,跟到这个局部变量赋值的地方。 
 
- b0e6XXXX 0f85d2000000    jne     TesXXXX+0x783c (b0e6XXXX)
 
 - b0e6XXXX 8b4508          mov     eax,dword ptr [ebp+8]
 
 - b0e6XXXX c74004bc000000  mov     dword ptr [eax+4],0BCh//这里赋值。
 
 - b0e6XXXX c7400c30010000  mov     dword ptr [eax+0Ch],130h
 
 - b0e6XXXX c74010a0010000  mov     dword ptr [eax+10h],1A0h
 
 - b0e6XXXX c7004c020000    mov     dword ptr [eax],24Ch
 
 - b0e6XXXX c740141c010000  mov     dword ptr [eax+14h],11Ch
 
  复制代码 
这段代码大体意思,判断当前系统版本。然后会给一些偏移。。。别的不管,我只管0xbc 
 
然后,我可以在b0e6XXXX c7400c30010000  mov     dword ptr [eax+0Ch],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 [ebx+4],0x118
 
 -       mov eax,0
 
 -       mov dr0,eax
 
 -       popad
 
 -       popfd
 
 -       iretd
 
 - jmpoldtrap01:
 
 -       popad
 
 -       popfd
 
 -       push  0
 
 -       mov   word ptr [esp+2],0
 
 -       jmp originalkitrap1addrjmpaddr
 
 -     }
 
 - }
 
  复制代码 
大体 就这样吧。 
 
 
 |   
 
 
 
 |