首页 > 修改教程 > gg手机游戏内存修改器_手机如何使用gg修改器修改游戏
gg手机游戏内存修改器_手机如何使用gg修改器修改游戏
  • gg修改器最新版
  • 大小:4.19MB版本:v3.27
  • 语言:简体中文系统:Android
绿色无毒,安全可靠!部分设备误报拦截请通过!

gg手机游戏内存修改器_手机如何使用gg修改器修改游戏

作者:佚名 来源:网友分享 日期:2024-04-20 06:26:03

大家好,今天小编为大家分享关于gg手机游戏内存修改器_手机如何使用gg修改器修改游戏的内容,赶快来一起来看看吧。

前言

《三国群侠传》是河洛工作室于2002年发行的一款角色扮演类单机游戏。一款非常老的游戏,游戏本身怎么样,不去评论。之所以修改它,是因为我老爸说游戏中的金钱太少了,一场战斗最多可以得到9999,而身上只可以带30000!打几战就要回城,老是跑来跑去的,太麻烦。。

于是,我用仅有的一点点反汇编知识,盘了它一次~

准备工作

要修改嘛,总要有适合的材料和工具才行!网上很多《三国群侠传》的版本,TKS.EXE这个游戏主程序是加过壳的!这种版本修改不了,需要先脱壳!

不过脱壳这种事往往难度太大,所以我们可以用更简单的方法!那就是找个没加壳的版本~~

编辑没加壳的版本大小大约在1022KB。比这个小几百KB的,肯定是加过壳了。。

材料有了,我们还需要修改的工具,这里使用的是c32asm

开始反汇编

用c32asm打开TKS.EXE文件进行反汇编,打开之后是这个样子的:

我们先来修改一下,在商店里卖东西后最大可以持有的金钱数量。

按下Ctrl+G打开跳转对话框,然后在EIP、RVA、Offset处分别填入:00425154,00025154,24B54 点击确定。

跳转之后,滑动鼠标滚轮或者点击c32asm右侧的滚动条,向上移动几行,然后我们来看一下这几行代码:

红框里第一行代码:

00424B49: 0FB705 82687500 MOVZX EAX, WORD PTR [756882]

这句代码表示,将内存地址0x756882处的值放入寄存器EAX中

第三行代码:

00424B53: BA 30750000 MOV EDX, 7530

这句代码表示,将16进制数7530放入寄存器EDX中。16进制的7530=十进制的30000

第四行代码:

SUB EDX, EAX

这句代码是对EDX和EAX两个寄存器做减法运算:EAX=EAX-EDX

第三行代码处的7530这个数,控制着商店里卖东西时候,你能得到的最大金额。

在c32asm上选中这一行,然后点击右键,选择 “对应HEX编辑” ,这个时候会切换到16进制编辑模式,此时按下Ctrl+Q,回到汇编模式

然后再次选择此行点击右键,选择最后一项 “汇编”

此时会弹出汇编对话框:

将7530(16进制)改成你想改的数值,点击左下角的 汇编 即完成修改。

但是需要注意,这个数值的大小是有限制的!因为它是一个无符号的短整数,所以取值范围是0-65535(十进制),16进制就是0-FFFF

修改战斗中获得的金钱上限

按下Ctrl+G打开跳转对话框,输入40C849,点击确定,将会跳转到此处:

红框里的前三行代码前面已经见过了,应是没什么疑问,要修改的地方也很明确。

但是,我们在最后一行,同样看到了7530这个数!这是什么情况?我们来看一下这几行代码:

0040C85B: 3BD1 CMP EDX, ECX //将EDX和ECX寄存器中的数值进行比较
0040C85D: 7D 0B JGE SHORT 0040C86A //根据上面比较的结果执行跳转或者不跳转
0040C85F: 66:C705 82687500 3075 MOV [WORD DS:756882], 7530 //这句表示将16进制数7530直接写入到内存地址0x756882中

总结,这几行代码的作用,是在战斗获得金钱之后,进行一次判断,如果总的金钱数超过了上限,就直接用7530这个值覆盖。

也就是说,我们需要把这里两处的7530都同时改掉。

修改单次战斗最大获取金钱

同样的按下Ctrl+G打开跳转对话框,然后输入地址:43B6D5

红框里汇编代码解读:

0043B6D5: 8B15 1C6F9D00 MOV EDX, [DWORD DS:9D6F1C] //将内存地址9D6F1C的值放入寄存器EDX

0043B6DB: 8D1492 LEA EDX, [DWORD DS:EDX+EDX*4] //LEA是传址指令

0043B6DE: 8915 1C6F9D00 MOV [DWORD DS:9D6F1C], EDX //将EDX的值写入内存地址9D6F1C

0043B6E4: 8B0D 1C6F9D00 MOV ECX, [DWORD DS:9D6F1C] //将内存地址9D6F1C的值放入寄存器ECX

0043B6EA: 81F9 0F270000 CMP ECX, 270F //CMP是比较指令,实际操作中相当于减法算法。这里相当于ECX-270F。270F是16进制数,也就是十进制的9999

0043B6F0: 7E 0A JLE SHORT 0043B6FC //跳转指令,如果ECX的值小于等于270F则跳转到地址0043B6FC

0043B6F2: C705 1C6F9D00 0F270000 MOV [DWORD DS:9D6F1C], 270F //上面的代码如果没有跳转,则会执行本句代码。如果ECX的值大于270F,则此处返回一个值写入到地址9D6F1C(如果战斗获取的金钱超过上面的值270F,则获得的金钱为此处的270F)

0043B6FC: 66:A1 1C6F9D00 MOV AX, [WORD DS:9D6F1C] //上面"JLE SHORT 0043B6FC"的跳转正是跳到本处。如果ECX的值小于等于270F,则跳到此处

将第五和第七行代码中的270F修改,就可以了。和前面一样,这个地址的值同样不能超过65535(FFFF)

至于0x756882和0x9D6F1C这两个内存地址是怎么来的?

它们是通过金山游侠、Cheat Engine这类内存修改工具找到的,本篇就不讲了~~

skyyx2002

2016.01.02-2016.01.08笔记

以上就是关于gg手机游戏内存修改器_手机如何使用gg修改器修改游戏的全部内容,希望对大家有帮助。

相关文章

热门下载

大家还在搜