首页
社区
课程
招聘
[求助]钩子函数如何追踪?
发表于: 2006-6-6 09:36 4489

[求助]钩子函数如何追踪?

2006-6-6 09:36
4489
我在研究一个网游反外挂登陆器,发现它对游戏程序下了GETMESSAGE钩子,并在钩子函数里面对游戏程序作了一些修改,使得用原版程序不能登陆服务器(私服),我怎么能够跟踪那个钩子函数到底对游戏程序作了什么动作呢?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
对钩子函数下断,找到钩子回调函数地址,然后进这个回调函数看看是面都干了些什么。
2006-6-6 10:57
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我是个菜鸟,才开始使用OD,是不是用“附加”?因为要用登陆器启动游戏才能下钩子,我不能用OD启动游戏。
2006-6-6 11:07
0
雪    币: 257
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
  厉害,菜鸟都调试反外挂登陆器
反正你断下SetWindowsHookEx函数,看第二个参数的值,那个值就是回调函数地址,去里边看看它干了什么
2006-6-6 11:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
也不是纯粹的菜鸟,有一些基础知识
钩子函数是这样的:
0f3d17c0 PUSH EBP               
0f3d17c1 MOV EBP,ESP            
0f3d17c3 MOV EAX,[F3D919C]          ; 09840000
0f3d17c8 CMP BYTE PTR [EAX+9],0     ; [09840009] = 1
0f3d17cc JNZ SHORT 0F3D1836      
0f3d17ce MOV EAX,[F3D5148]      
0f3d17d3 CMP BYTE PTR [EAX],0   
0f3d17d6 JNZ SHORT 0F3D1836      
0f3d17d8 MOV EAX,[F3D919C]      
0f3d17dd MOV BYTE PTR [EAX+9],1  
0f3d17e1 MOV EAX,[F3D919C]      
0f3d17e6 MOV EAX,[EAX+A]         
0f3d17e9 MOV EDX,[F3D5444]      
0f3d17ef MOV [EDX],EAX           
0f3d17f1 CALL 0F3CF228           
。。。。。。

这里调用了一个子程序如下:
0f3cf228 PUSH 489887            
0f3cf22d JMP 0F3CE706            

0f3ce706 PUSHFD                  
0f3ce707 PUSHAD                  
0f3ce708 PUSH EF70000            
0f3ce70d MOV ESI,[ESP+28]        
0f3ce711 CLD                     
0f3ce712 MOV EDX,F3DE000         
0f3ce717 CALL [F3DA150]         
0f3ce71d MOV EBX,EAX            
0f3ce71f MOV ECX,100            
0f3ce724 MOV EDI,EDX            
0f3ce726 REPNE SCAS BYTE PTR ES:[EDI]
0f3ce727 SCAS DWORD PTR ES:[EDI]
0f3ce728 JE SHORT 0F3CE737      
0f3ce72a MOV EAX,100            
0f3ce72f XCHG EAX,ECX            
0f3ce730 MOV EDI,EDX            
0f3ce732 REPNE SCAS BYTE PTR ES:[EDI]
0f3ce733 SCAS DWORD PTR ES:[EDI]
0f3ce734 MOV [EDI-4],EBX         
0f3ce737 MOV EBP,EDI            
0f3ce739 SUB EDI,EDX            
0f3ce73b SHL EDI,1               
0f3ce73d LEA EDI,[EDX+EDI*8+3C0]   
0f3ce744 MOV EBX,ESI            
0f3ce746 ADD ESI,[ESP]           
;--------------注意这里------------------
0f3ce749 MOV AL,[ESI]            
0f3ce74b ADD AL,BL               
0f3ce74d INC AL                 
0f3ce74f ROL AL,6               
0f3ce752 XOR AL,49              
0f3ce754 INC ESI              
0f3ce755 SUB AL,41           
0f3ce757 ADD BL,AL           
0f3ce759 MOVZX EAX,AL      
0f3ce75c PUSH DWORD PTR [EAX*4+F3E2400] ;0F3CF15A  
0f3ce763 RETN                    
这里压入一个返回地址,经过跟踪返回到如下代码:
0f3cf15a LODS BYTE PTR [ESI]     
0f3cf15b ADD AL,BL               
0f3cf15d ROR AL,1               
0f3cf15f XOR AL,50               
0f3cf161 ROR AL,3               
0f3cf164 XOR AL,5C               
0f3cf166 ADD AL,88               
0f3cf168 ADD BL,AL               
0f3cf16a POP DWORD PTR [EDI+EAX*4]
0f3cf16d JMP 0F3CE749            
在这里又返回到0F3CE749,然后在0f3ce75c处又压入了另外一个返回地址,是类似于0f3cf15a的一个程序段,仍然跳回到0F3CE749,此过程重复若干次(不知道多少次),我不知道怎么才能知道这个程序最终运行到哪里才能进入有效程序段。
2006-6-6 11:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
高手大大们,帮帮忙啊。。。!
2006-6-6 14:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
没有人理睬。。。
这种反复跳转的代码怎么跟啊,希望有经验的高手指点一下。。。
它的每个子程序执行完后都要进入这个,没法跟踪了。。。
2006-6-6 15:10
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
沉了。顶一下。。。
2006-6-7 12:16
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
先从网络数据包分析入手可能会好一些
2006-6-7 22:39
0
游客
登录 | 注册 方可回帖
返回
//