| 修改众 |
07-12-10 15:05 |
搜索金钱 4b
0 金钱 +4 攻击 2b +6 +8 +a ... +e
130 生命
作弊不死
004faf48 push 01 ===jmp 00500ee7 004faf4a push ebx 004faf4b mov ecx,ebp
0050292f je =======jmp
前几天,朋友推荐了1个游戏给我《神圣纪事 (Sacred)》 感觉和暗黑差不多,打装备升级做任务的那种模式。
玩了1会就烦了。 然后开始修改。
首先当然是改钱了。 (因为容易找嘛~ 很快就找到了钱的地址。(根据经验,钱的旁边应该有点有用的东东。 随便上下看看。 发现钱后面就是人物的所有能力。攻击,防御,敏捷等等都在。(哦~ 这么简单啊 修改所有能力到65535 (2字节的上限就这么多啦,哦哈哈,这才是真正的无敌啊~随便砍个怪看看效果去~
就在1刀秒掉1个野怪的同时,自己也死了! (不会吧,我自己怎么死了 ? 头一次碰到这种事。 再看看,所有能力也都变成了0或者1 (哎哟,真可怕,这是什么bug ?
重新把所有能力改到 1000 (改少点吧,不然又可能bug 结果刚砍死另外1个怪,同样的事再次发生。又挂了。所有能力变0 (晕,这是....反修改?
查找是什么让HP变成0,自己怎么死的。 得到了如下的代码 005105fc - 90 - nop 005105fd - 90 - nop 005105fe - 90 - nop 005105ff - 90 - nop 00510600 - 8b 44 24 08 - mov eax,[esp+08] 00510604 - 83 f8 02 - cmp eax,02 00510607 - 77 0b - ja 00510614 00510609 - 8b 54 24 04 - mov edx,[esp+04] 0051060d - 89 94 81 78 04 00 00 - mov [ecx+eax*4+00000478],edx ===〉断在这里,edx此时为0 00510614 - c2 08 00 - ret 0008 哦。。 我是这么死掉的啊。( 这个看起来很奇怪的call是什么,这么短,看起来功能就是让我死用的嘛 跟出去,看看是谁调用的这个call 得到如下代码
... 004faf34 - 55 - push ebp 004faf35 - 50 - push eax 004faf36 - e8 a5 66 0a 00 - call 005a15e0 004faf3b - 56 - push esi 004faf3c - 8b cf - mov ecx,edi 004faf3e - e8 5d 6f f9 ff - call 00491ea0 004faf43 - e9 9f 5f 00 00 - jmp 00500ee7 004faf48 - 6a 02 - push 02 004faf4a - 53 - push ebx 004faf4b - 8b cd - mov ecx,ebp 004faf4d - e8 ae 56 01 00 - call 00510600 ===>就是这里调用的那个call 004faf52 - 8b 4d 10 - mov ecx,[ebp+10] 004faf55 - 51 - push ecx 004faf56 - e8 b5 95 f2 ff - call 00424510 004faf5b - 8b 55 0c - mov edx,[ebp+0c] 004faf5e - 83 c4 04 - add esp,04 004faf61 - 50 - push eax ... 哦,原来如此,这果然是个反修改的call。 (这就好办了,让它不起作用就可以了 正好上面有个jmp,就用这个吧。 直接把 push 02 push ebx mov ecx,ebp 改成 jmp 00500ee7
好了,回到游戏。再次修改了能力,砍怪果然不死了。 (我砍,我砍,哈哈,死不了了吧
不过还有个问题,虽然不会死了,就是能力值会变成0 如法炮制,得到能力值变成0的代码 这是1小部分 ... 005028fd - 8b 86 96 03 00 00 - mov eax,[esi+00000396] 00502903 - 8b d7 - mov edx,edi 00502905 - 33 d0 - xor edx,eax 00502907 - 8b 41 04 - mov eax,[ecx+04] 0050290a - 3b c2 - cmp eax,edx 0050290c - 74 0e - je 0050291c 0050290e - 88 5c 24 13 - mov [esp+13],bl 00502912 - c7 86 96 03 00 00 01 00 00 00 - mov [esi+00000396],00000001 ===>生命值变成1 0050291c - 66 8b 86 a6 03 00 00 - mov ax,[esi+000003a6] 00502923 - 8b 51 08 - mov edx,[ecx+08] 00502926 - 25 ff ff 00 00 - and eax,0000ffff 0050292b - 33 c7 - xor eax,edi 0050292d - 3b d0 - cmp edx,eax 0050292f - 74 0d - je 0050293e 00502931 - 88 5c 24 13 - mov [esp+13],bl 00502935 - 66 c7 86 a6 03 00 00 01 00 - mov word ptr [esi+000003a6],0001 ===>力量变成1 0050293e - 8d 41 0c - lea eax,[ecx+0c] ...
( 哇啊,这游戏作者真无聊,居然有这种让所有能力变成1的代。明显就是不让修改嘛。 (不过嘛,嘿嘿,正好被我利用了 把变成1的地方改成自己想要的数值。 变成了如下 ... 005028fd - 8b 86 96 03 00 00 - mov eax,[esi+00000396] 00502903 - 8b d7 - mov edx,edi 00502905 - 33 d0 - xor edx,eax 00502907 - 8b 41 04 - mov eax,[ecx+04] 0050290a - 3b c2 - cmp eax,edx 0050290c - 74 0e - je 0050291c 0050290e - 88 5c 24 13 - mov [esp+13],bl 00502912 - c7 86 96 03 00 00 01 00 00 00 - mov [esi+00000396],0000ffff ===>生命值变成65535 0050291c - 66 8b 86 a6 03 00 00 - mov ax,[esi+000003a6] 00502923 - 8b 51 08 - mov edx,[ecx+08] 00502926 - 25 ff ff 00 00 - and eax,0000ffff 0050292b - 33 c7 - xor eax,edi 0050292d - 3b d0 - cmp edx,eax 0050292f - 74 0d - je 0050293e 00502931 - 88 5c 24 13 - mov [esp+13],bl 00502935 - 66 c7 86 a6 03 00 00 01 00 - mov word ptr [esi+000003a6],ff7f ===>力量变成65535 0050293e - 8d 41 0c - lea eax,[ecx+0c] ...
哇哈哈,这下能力不仅不变成0,想要多少就能变多少了,太好啦 [s:1] |
|