找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 321|回复: 4

【求助】【新英雄年代】选择怪物call,跟不下去了。请高手进来看一下

[复制链接]

2

主题

4

回帖

0

积分

新手上路

积分
0
发表于 2013-8-11 16:21:33 | 显示全部楼层 |阅读模式
新人上路,下载了 新英雄年代 进行练手。找call
使用ce,找到了选择怪物的地址。找到了三个对其写入的代码地址
00455449 - 89 86 F40B0000        - mov [esi+00000BF4],eax       ;  选择时写入的怪物ID
00455551 - 89 86 F40B0000        - mov [esi+00000BF4],eax       ;  取消先择怪物时
00455573 - 89 86 F40B0000        - mov [esi+00000BF4],eax       ;  左键选择时的ID,包括捡装备和钱

用OD打开游戏,转到这三个地址,F2断点,当使用上述三种功能时,会分别断在三个地址上。
三个地址ctrl+f9,指向的是同一个call
00438BF4  |. |FFD2          |CALL EDX                                                   ;  选择怪物call
00438BF6  |. |8B06          |MOV EAX,DWORD PTR DS:[ESI]               ;  ctrl+f9返回的位置

这个call EDX 怎么破啊。而且00438bf4 是在一个循环中,只要在这里F2,游戏立马会被断下来。好郁闷啊。

00438BC5  |> /3BF3                              /CMP ESI,EBX
00438BC7  |. |74 52                               |JE SHORT client.00438C1B
00438BC9  |> |8B7E 04                         MOV EDI,DWORD PTR DS:[ESI+4]
00438BCC  |. |3B35 44A58C00             |CMP ESI,DWORD PTR DS:[8CA544]
00438BD2  |. |75 03                               |JNZ SHORT client.00438BD7
00438BD4  |. |895E 4C                          |MOV DWORD PTR DS:[ESI+4C],EBX
00438BD7  |> |395E 4C                         |CMP DWORD PTR DS:[ESI+4C],EBX
00438BDA  |. |74 0D                              |JE SHORT client.00438BE9
00438BDC  |. |56                                   |PUSH ESI
00438BDD  |. |E8 FE3A2B00                |CALL client.006EC6E0
00438BE2  |. |8BF7                               |MOV ESI,EDI
00438BE4  |. |8B4D EC                         |MOV ECX,DWORD PTR SS:[EBP-14]
00438BE7  |.^ EB DC                            |JMP SHORT client.00438BC5
00438BE9  |> |8B06                              |MOV EAX,DWORD PTR DS:[ESI]
00438BEB  |. |8B4D 08                         |MOV ECX,DWORD PTR SS:[EBP+8]
00438BEE  |. |51                                   |PUSH ECX
00438BEF  |. |8BCE                             |MOV ECX,ESI
00438BF1  |. |8B50 24                         |MOV EDX,DWORD PTR DS:[EAX+24]
00438BF4  |. |FFD2                             |CALL EDX         ;  选择怪物call
00438BF6  |. |8B06                              |MOV EAX,DWORD PTR DS:[ESI]              ;  选择怪物call
00438BF8  |. |8BCE                            |MOV ECX,ESI
00438BFA  |. |8B50 28                        |MOV EDX,DWORD PTR DS:[EAX+28]
00438BFD  |. |FFD2                            |CALL EDX
00438BFF  |. |85C0                            |TEST EAX,EAX
00438C01  |. |74 11                            |JE SHORT client.00438C14
00438C03  |. |56                                 |PUSH ESI
00438C04  |. |A1 38A58C00               |MOV EAX,DWORD PTR DS:[8CA538]
00438C09  |. |8B88 C8010000           |MOV ECX,DWORD PTR DS:[EAX+1C8]
00438C0F  |. |E8 4CADFFFF             |CALL client.00433960
00438C14  |> |8BF7                           |MOV ESI,EDI
00438C16  |. |8B4D EC                      |MOV ECX,DWORD PTR SS:[EBP-14]
00438C19  |.^\EB AA                        \JMP SHORT client.00438BC5

1793

主题

457

回帖

0

积分

管理员

积分
0
发表于 2013-8-11 17:37:36 | 显示全部楼层
call 寄存器
就是这个函数可能会被多次调用到、或者这个函数是个动态的,总之不是固定函数,而是需要计算出来的函数地址。

多跟踪几次,万一函数这个CALL向的地址是固定的,你就捡着了哦~

2

主题

4

回帖

0

积分

新手上路

积分
0
 楼主| 发表于 2013-8-11 19:01:37 | 显示全部楼层
call进去的是固定地址。

问题就是,这个call EAX  一下断就被断下来了。
跟本就没有机会去 选择怪物

1793

主题

457

回帖

0

积分

管理员

积分
0
发表于 2013-8-11 21:37:59 | 显示全部楼层
在里面固定地址处下断
再向上找

1

主题

16

回帖

0

积分

新手上路

积分
0
发表于 2013-10-2 00:45:56 | 显示全部楼层
00438BE9  |> |8B06                              |MOV EAX,DWORD PTR DS:[ESI]        //ESI应该是人物对象
00438BEB  |. |8B4D 08                         |MOV ECX,DWORD PTR SS:[EBP+8]
00438BEE  |. |51                                   |PUSH ECX                                             
00438BEF  |. |8BCE                             |MOV ECX,ESI
00438BF1  |. |8B50 24                         |MOV EDX,DWORD PTR DS:[EAX+24]        //EDX=[[ESI] +24]
00438BF4  |. |FFD2                             |CALL EDX         ;  选择怪物call

这个CALL
首先说下   00455449 - 89 86 F40B0000        - mov [esi+00000BF4],eax
这个ESI一般情况 是人物对象指针,   也就是说 [ESI+BF4]是当前选中怪物(NPC, 物品)的ID, 这里的EAX应该就是CALL的参数
CALL EDX ,  这个EDX是人物类的一个方法(行为), 这是通过人物对象指针算出来的, 一般是固定的,其实自己也可以通过 人物对象计算得到
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

果子博客
扫码关注微信公众号

Archiver|手机版|小黑屋|风叶林

GMT+8, 2026-2-1 03:27 , Processed in 0.146840 second(s), 20 queries .

Powered by 风叶林

© 2001-2026 Discuz! Team.

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