子弹在内存中存放上,是以4的倍数存的,也就是说,出门是你有,14发子弹,内存中就是56,而且如果你只是这样找,恐怕你也不一定找的到,因为游戏存储内存时,好像并不是正常的双字节格式,这里建议用TS,用他可以很容易找到。找到后就可以下断点,找到代码了,改起来也容易,一个NOP,就搞定。
现在要说最关键的地方了,这个游戏的内存是固定的,但为什么我还是无法做出真正通用的修改呢?因为它的代码居然是动态的,具体我就不说了,我也不明白他怎么实现的,不过怎么回事我是看清了,就是没想明白怎么处理,知道的请跟下贴。
我乱七八糟说了一堆,相信有修改能力的人,在自己的机器上,无限弹是不成问题了,没能力的,等有人找到办法做出修改再说吧,这个我目前还没想到办法。最后提供点有用的数据(生命我还没有找到(没找呢))。
子弹的地址:一般是0x17e52fdd | 0x17e62fdd
子弹代码地址:0x18e | 0x18e
子弹内存数值:子弹数*4
子弹处代码:
18E 55 push ebp
18E 8BEC mov ebp, esp
18E 53 push ebx
18E A1 F mov eax, [F8]
18E C1E8 08 shr eax, 8
18E7192C BB D82FE617 mov ebx, 17E62FD8
18E 01D8 add eax, ebx
18E 8B00 mov eax, [eax]
18E 50 push eax
18E B8 mov eax, 400
18E7193B 5B pop ebx
18E7193C 29C3 sub ebx, eax
18E7193E 89D8 mov eax, ebx
18E 50 push eax
18E A1 F mov eax, [F8]
18E C1E8 08 shr eax, 8
18E BB D82FE617 mov ebx, 17E62FD8
18E7194E 01D8 add eax, ebx
18E 89C3 mov ebx, eax
18E 58 pop eax
18E 90 nop //这里原来是mov [ebx],eax,NOP掉,就全枪无限了
18E 90 nop
18E 5B pop ebx
18E 5D pop ebp
18E C3 retn
以上的地址,在XPSP2下,你多进几次游戏,不行就重启,100%有相同的时候。
另外我发现这游戏接上手柄和不接手柄还不一样,具体差多少,我还没有细研究。
上面写的比较乱,不过相信在和我水平一样,或比我还高的人眼里,应该能看出些东西,跟踪调试一下,就会知道是怎么回事了,希望有能够解决动态分配空间及代码的,在这里跟贴贴出方法。
顺便说一下,我就是JACK。 JACK==gamehack
在一楼贴上最近更新的V1。10修改器,如果可以使用,可以无限生命,无限武器,效果很不错。(未通关,后期不知,应无问题)。
使用方法: 打开修改器,进游戏后把画面停在开始那里,就是可以选新游戏,读档那里,按修改器里的,读取数值,如果是56,点对应下方的修改代码,就可以无敌了,没有提供代码恢复功能,重开游戏才能恢复。
接手柄和不接手柄时,游戏的内存状态不一样,而且同样是不接手柄,内存状态也并不每次都一样。所以两边的按钮都试试,只要读出来的是56(手枪的子弹数*4,默认为14发),就可以点击下面的修改代码按钮啦。
做的有够累,游戏有够BT,请使用了的玩家,发贴支持一下。
刚刚忘说了,包里我还放了一个网友制做的汉化,我试了,好用,替换文件就可以,是脚本。
注意,全屏游戏时要是不行,请换成窗口化再试试。也许可以。游戏累人,不准备继续研究了。