- 注册时间
- 2021-4-16
- 最后登录
- 2024-7-10
- 在线时间
- 5 小时
编程入门
- 龙马币
- 93
|
继上一次过掉双击调试之后,利用它的思想,又相继过掉了那几个函数和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
- }
- }
复制代码
大体 就这样吧。
|
|