首页
社区
课程
招聘
关于TP的debupport清零的一个奇怪问题!老大们进来帮忙看看?
发表于: 2013-3-19 11:17 5521

关于TP的debupport清零的一个奇怪问题!老大们进来帮忙看看?

2013-3-19 11:17
5521
游戏是随便找的一个有TP保护的!qq游戏大厅里面的三国战记!(本着短小精悍的原则嘛,嘿嘿!)

过了双机调试之后,在Debugport偏移处下读断点!
TesSafe(这是TP模块地址,下面我都用TesSafe代替)
ba r4 TesSafe+0xbc
得到了四处清零地址:
TesSafe+0x6ef1:
                                      xor     ecx,ecx
ede76eef 8708            xchg    ecx,dword ptr [eax]
ede76ef1 8b4624         mov     eax,dword ptr [esi+24h]

TesSafe+0x22a2:
ede4e2a2 8b09            mov     ecx,dword ptr [ecx]

上面两处我都搞定了,直接retn了!还有一处检测我也retn了,在虚机里面测试,不会再读了!
————————————————————————————————————

问题就出在下面两处上面,edx是debugPort的偏移地址!
TesSafe+0xba4cc:
edf064ca ff32            push    dword ptr [edx]
edf064cc e9a8350000      jmp     TesSafe+0xbda79 (edf09a79)

TesSafe+0xbb0f2:
edf2b0f0 8f02            pop     dword ptr [edx]
edf2b0f2 e9c5f1ffff      jmp     TesSafe+0xba2bc (edf2a2bc)
我HOOK了上面两处地方,请看我的HOOK代码

ULONG g_uPopJmpImageBase = TesSafe+0xba2bc;//这是要跳转的地址
__declspec(naked) void HookDegbugPOP()
{
        __asm
        {
                        pushfd
                        pushad
                        mov eax,u_TesSafeDebugPortImageBase//这个是Debugport的偏移地址
                        cmp edx,eax
                        jnz MYPOP
                        popad
                        popfd
                        add esp,0x4
                        jmp g_uPopJmpImageBase
MYPOP:
                        popad
                        popfd
                        pop DWORD PTR [edx]
                        jmp g_uPopJmpImageBase
        }
}

我比较edx是否等于debugport的偏移,如果不等于我就让它执行以前的代码(即汇编中MYPOP标签的地方),如果相等的话,我直接抬高堆栈,然后JMP到TP原来的地址继续执行

HOOK的代码是这样写的:
                 *(PUCHAR)u_HookPOPBase = 0xe9;   //POP地址
                *(PULONG)(u_HookPOPBase+0x1) = (ULONG)HookDegbugPOP - u_HookPOPBase - 0x5 ;
请问老大:
1、这样的思路是否有问题?
2、为什么我HOOK成功之后,下debugport的读断点的时候,还是会断在 MYPOP标签的地方(即程序原来的代码?)
(POP和PUSH这两处地方遇到了同样的问题)

求老大指点,感激不尽!!

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 70
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看看有没有砖家指导
2013-3-19 11:52
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
目测 u_TesSafeDebugPortImageBase 不对吧
2013-3-19 12:43
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
Xp系统下,我取的是 TesSafe.sys的首地址然后 + 0xbc的偏移
2013-3-19 12:52
0
雪    币: 40
活跃值: (145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不是驱动的地址+bc,是游戏进程的吧
2013-3-19 14:12
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
什么都不懂的路过
2013-3-19 23:28
0
雪    币: 3836
活跃值: (4142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼主先搞懂什么是debugport吧。。。。在进程结构Eprocess里面
2013-3-20 00:37
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
哎呀,一语惊醒梦中人,我来试下,谢谢啊!!
2013-3-20 09:58
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
CCDmichael ,谢谢你,问题搞定了!呵呵!
2013-3-20 14:05
0
雪    币: 203
活跃值: (26)
能力值: (RANK:20 )
在线值:
发帖
回帖
粉丝
10

楼主  ba  r4  0xxxxxxxxx+0xec  为什么  我总是断在  系统的函数  上    没有断在游戏的驱动上

能加我吗 QQ1841370452

2017-8-11 10:42
0
游客
登录 | 注册 方可回帖
返回
//