看流星社区

 找回密码
 注册账号
查看: 3284|回复: 2

OD找游戏关键CALL入门

[复制链接]

该用户从未签到

发表于 2011-8-5 12:42:59 | 显示全部楼层 |阅读模式
在OD的左下角可以打入命令 bp send 回车
之后立即回到游戏,点游戏里的<回到附近城市>,
这时OD断在71A2428A > 8BFF          MOV EDI,EDI
这是发包函数的入口,属于ws2_32.dll的一个函数  
游戏是要和服务器保持连接的。你一打bpsend 就断了那不是断到回城的调用上  
一直接f9直到游戏正常  
按过返城后,那个断才有用!
71A2428A > 8BFF          MOV EDI,EDI
断到这后,按ctrl+f9 就执行到这个函数的末尾
71A24310    C2 1000        RETN 10
执行到这  
再按f8就回到了函数主体中
005706C9 |. 8B0D 4CEC8C00 MOV ECX,DWORD PTR DS:[8CEC4C]
005706CF |. 6A 00        PUSH 0                        ; /Flags =  
0005706D1 |. 6A 01        PUSH 1                        ; |DataSize = 1
005706D3 |. 68 005A8C00    PUSH elementc.008C5A00              ; |Data = elementc.008C5A00
005706D8 |. 51          PUSH ECX                        ; |Socket =>100
005706D9 |. E8 28031D00    CALL <JMP.&WS2_32.#19>              ; \send
005706DE |. EB 07        JMP SHORT elementc.005706E7在这里  

005706D9 |. E8 28031D00    CALL <JMP.&WS2_32.#19>              ; \send从这里看到,这就是调用send 参数有四个  
其它有两个比较重要,一个是datasize 一个是data  
这两个一个是包长,一个是包首地址

Data = elementc.008C5A00
这里的data大家可以跟一下,恳定是加密的数据,一般没什么规律的。
然后继续ctrl+f9 又执行到末尾 00570721 \. C2 0C00      RETN 0C
再f8就回到上一层调用

(不死游戏也可以下断。但是断后,往回找,是找不到有用的东西的)  
按f800568825 |. 8B5424 08    MOV EDX,DWORD PTR SS:[ESP+8]
00568829 |. 52          PUSH EDX                        ; /Arg3
0056882A |. 8B5424 08    MOV EDX,DWORD PTR SS:[ESP+8]          ; |
0056882E |. 52          PUSH EDX                        ; |Arg2
0056882F |. 50          PUSH EAX                        ; |Arg1
00568830 |. E8 2B7D0000    CALL elementc.00570560              ; \elementc.00570560
00568835 |. C2 0800      RETN 8
回到这样一个调用 有三个参数 这三个参数不知道是什么,
要想看,就需要在00568830 |. E8 2B7D0000    CALL elementc.00570560      ;\elementc.00570560去下断。  
因为现在游戏已经停了。要按f9才能继续  
50的游戏有个事,就是OD停了过久,就会当掉。所以我们不按f9继续ctrl+f9 再按f8  
停在0058CB46 |. A1 44638C00    MOV EAX,DWORD PTR DS:[8C6344]
0058CB4B |. 6A 02        PUSH 2                        ; /Arg2 =00000002
0058CB4D |. 56          PUSH ESI                        ; |Arg1
0058CB4E |. 8B48 20      MOV ECX,DWORD PTR DS:[EAX+20]          ; |
0058CB51 |. E8 0AE1FDFF    CALL elementc.0056AC60              ;\elementc.0056AC60
0058CB56 |. 56          PUSH ESI
这里大家可以发现,有一个相当熟悉的 地址 是的8C6344这就是目前50的一级基址  
CALL elementc.0056AC60 从这个函数看来,是一个可以调用的函数了  
它有三个参数,两个是显示的,一个是隐式的 隐式的是ecx ecx=[一级base]+20 取值  

这个函数先分析到这。我们继续按ctrl+f9 ,再按f8  

00565C56 |. C700 00000000 MOV DWORD PTR DS:[EAX],0
00565C5C |. E8 CF6E0200    CALL elementc.0058CB30
00565C61 |> 83C4 0C      ADD ESP,0C
这个调用更简单了。 给eax附值0,并调用.0058CB30
可以试着调用一下。也许这个就是死亡回城函数
刚才的断点有作记录吧
重新启动游戏后,可以直接断在刚才分析的地方了。就可以进行分析了  
所有的函数操作,都是这个找法 经过一定的动作分析后,发现停在
0058CB46 |. A1 44638C00    MOV EAX,DWORD PTR DS:[8C6344]
0058CB4B |. 6A 02        PUSH 2                        ;/Arg2=00000002
0058CB4D |. 56          PUSH ESI                        ; |Arg1
0058CB4E |. 8B48 20      MOV ECX,DWORD PTR DS:[EAX+20]          ; |
0058CB51 |. E8 0AE1FDFF    CALL elementc.0056AC60              ; \elementc.0056AC60
0058CB56 |. 56          PUSH ESI明文发包函数

0012F400    10FC4450 |Arg1 = 10FC4450
0012F404    00000002 \Arg2 = 00000002看明文发包,死亡回城就里的参数是上面这样的 10FC4450数据区里的数 是10FC4450 04 00  
说明给明文发包函数传 0400 这个命令就可以死亡回城了                              (记录失败的话)你可以断在0058CB30这里。继续ctrl+f9 ,f8回到上一城

回到上一层,是这样的一个函数
004FB000    . E8 BBB5FAFF    CALL elementc.004A65C0
004FB005    . 8D88 EC000000 LEA ECX,DWORD PTR DS:[EAX+EC]
004FB00B    . E8 10AC0600    CALL elementc.00565C20这个便是我们最终找到的死亡回城函数了


00466707 |. 8B4C24 2C    MOV ECX,DWORD PTR SS:[ESP+2C]
046670B    |. 51          PUSH ECX
0046670C |. 50          PUSH EAX
0046670D |. E8 4E791200    CALL elementc.0058E060买东西了。  

07BE2BA8 BD 06 00 00 00 00 00 00 10 00 00 00          ?...... ....发送数据为物类别ID,在NPC中格子的位置 数量

要买卖东西 ,要熟知包果中的物品的位置,类加ID,和数量
买东西,要知道NPC中包的物品类别ID,位置,和购买数量

该用户从未签到

发表于 2020-3-25 09:44:55 | 显示全部楼层
看到这么好的资源真是高兴,楼主辛苦了!

该用户从未签到

发表于 2020-4-11 17:25:16 | 显示全部楼层
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-29 16:22

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表