|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 L、梦 于 2011-11-2 20:45 编辑
今天突然很想玩仙剑4,顺便看看能不能做修改器。打开ce,找到的居然是数组,唉,蛋疼的程序员……
找了半天,我突然醒悟,ce是找不到的……
祭出大杀器od,小样的还不是搞定。将过程发出来,抛砖引玉。
以云天河为例
首先查找动态血量基址,我找到的是7eb490b0,查找写入改地址的代码
0043fdc5 - 89 bc 9e cc 00 00 00 - mov [esi+ebx*4+000000cc],edi
蛋疼的程序员……
下面打开od,定位到地址0043fdc5,可以看到写入的地址是esi+7*4+000000cc
往上走,找esi
0043FDAE . 8DB1 54010000 LEA ESI,DWORD PTR DS:[ECX+154] //esi=ecx+154
接着往上走找ecx
0043FD90 . 51 PUSH ECX //到函数头了,说明ecx来自上层call,在这里下断来到0043ed2a
继续往上看 mov ecx,ebx //ecx=ebx
现在找ebx
0043ECC4 . 8BD9 MOV EBX,ECX //ebx=ecx
继续找ecx,上去一点是函数头了,说明ecx来自上层call,在头部下断来到
0045189B |. 8D9E 54060000 LEA EBX,DWORD PTR DS:[ESI+654]
004518A1 |. 8BCB MOV ECX,EBX //ecx=ebx=esi+654
那么现在要找esi
004517E6 |. 8BF0 MOV ESI,EAX //esi=eax
eax的值一般都是函数的返回值,现在就看前面的几个call了
我找到的是这个call 004517D3 |> \E8 B8EEFEFF CALL PAL4.00440690 //f8跟进去
呵呵,马上就可以看到eax了:
004406CA |> \A1 28148E00 MOV EAX,DWORD PTR DS:[8E1428]
云天河的血量基址:[8e1428]+654+154+7*4+0cc=[8e1428]+890
其它的就不用我说了吧……
下面找韩凌纱的数据,还是先找动态的地址,我找到的是7EB49BC4,呵呵正好等于云天河的7eb490b0+b14,
那么数组长度就是b14,
云天河的血量基址:8e1428]+890+0*b14
等级:[8e1428]+884+0*b14
当前经验:[8e1428]+888+0*b14
精:[8e1428]+890+0*b14
最大精:[8e1428]+7ac+0*b14
气:[8e1428]+894+0*b14
神:[8e1428]+898+0*b14
最大神:[8e1428]+7b4+0*b14
武:[8e1428]+668+0*b14
防:[8e1428]+66c+0*b14
速:[8e1428]+670+0*b14
运:[8e1428]+674+0*b14
灵:[8e1428]+678+0*b14
韩凌纱的血量基址:8e1428]+890+1*b14
……
后面的以此类推
将人物锁定为奔跑状态,仙剑4中人物有3中走路状态,慢走、快走、奔跑,分别由0、1、2表示,经过查找可以到看到
00427dd4 - 89 41 28 - mov [ecx+28],eax
用od附加
00427DD4 8941 28 MOV DWORD PTR DS:[ECX+28],EAX //eax=0,1,2人物3种状态
看看下面的代码,右边的注释,case2,case1,case0
MOV DWORD PTR DS:[ECX+28],EAX //将eax改为2就可以锁定人物为奔跑了
呵呵,挺喜欢仙剑这游戏的 |
评分
-
查看全部评分
|