您的位置:首页资讯知识加油站 → gdb修改游戏方法分享

gdb修改游戏方法分享

时间:2012/3/1 9:10:59来源:www.pc6.com作者:lff我要评论(0)

5 页 第 4 页

  果然他自动跳出了一个地方,那就是 4ad2c处,我手上的COIN 由59 变为了 58, 我这里设置了R4=1,就是1个coin。那么回到IDA里面找到这个断点的程序代码吧。就是以下部分。

  __text:0004AD26 LDR R1, [R2]

  __text:0004AD28 SUBS R1, R1, R4

  __text:0004AD2A STR R1, [R2]

  __text:0004AD2C LDR R4, [R0,#4]

  仔细看他上面的一句,str就是写入内存的语句。这句话的意思是把R1寄存器里面的值(58)写入 R2寄存器值所代表的地址。你可以看到这个时候R2寄存器的值就是0X16D49C, 也就是我们找到的COIN手头值的存放地址。

  那么上语句SUBS R1, R1, R4显然就是把手头的值R1,减去购买的值,余额放回R1寄存器了。

  

  其实前面3句是最典型的了,先是读取内存值得到COIN值,放入R1寄存器,然后减去购买值,然后把余额放回原来的地址更新。

  所以这里最简单的就是把减法的语句去掉或者把R4设置为0, 那手头的COIN就不会变为负数了。甚至你可以自己改为任何COIN值。不过担心封号,所以我这里没有弄它。 其实当你知道COIN的地址后, 你直接在GDB里面设置

  set *0x16d49c=9999999, 那你已经有无限COIN了。不过还是那句,没法做成补丁分享。还是那句,自己爽比较简单,改好就行。但是要放出,还要继续想如何修改程序。

  好了,余额变为负数的地方找到了,心里就有底了。所以回过头来,继续看如何才能做出每次读取购买所需的COIN为0的补丁?

  

  我们已经知道调出大包价格的内存地址为 0x166430., 值为800. 那么如果我们换一个物品,他的价格变化了,这个内存地址的值就会变化,我只要知道在哪里变的就好了。一样的,设置监视内存断点。

  watch *0x166430, c 继续游戏,选择第一物品,那个要1000COIN.

  程序立即跳出断点了,显示是由800变为了0, 在memset 子程序里面。这里显然是reset. 然后c, 继续,他又跳出了下一个断点了, 数值由0变为了1000,哈哈,就是这里了。

  0x000461b4 in setBriefStoreItem ()

  在IDA里面找到这句语句以及他前面的部分如下

  __text:000461A8 MOVS R3, #4

  __text:000461AA MOV R0, R6

  __text:000461AC BL __Z16setBriefItemInfoP16_brief_item_infojjj ; setBriefItemInfo(_brief_item_info *,uint,uint,uint)

  __text:000461B0 LDR R3, [R4,#0xC]

  __text:000461B2

  __text:000461B2 loc_461B2 ; CODE XREF: __text:00046186j

  __text:000461B2 STR R3, [R6,#0x20]

  __text:000461B4 B loc_461D2

  可以看到他的内存修改来自于上面一句写入语句,R3寄存器的值就是购买的PRICE. 再看上面一句,

  text:000461B0 LDR R3, [R4,#0xC]

  这里就是R3寄存器的来源了,那么我只要把这句读取的语句改为设置R3为0,就万事大吉了。mov r3, #0

  把text:000461B0 LDR R3, [R4,#0xC] 改为 mov R3, #0, 就是我已放出补丁唯一修改的一个地方。

  还没有完,我们要做程序的修改了。

  

  把鼠标放在这句程序上,然后选择hex-view. 这样你就可以知道LDR r3, [r4, #0XC]的机器码代码了,为 E3 68.

  同样的,你也要知道你改为的 MOV R3, #0 的机器代码。这个可以用汇编工具做,IPOD4G帖子里面有。不过有个更简单,因为这句话很简单,所以你可以在IDA-VIEW里面找到类似的,然后在切换到HEX-VIEW里面就知道他的机器代码了。是00 23.

  所以你只要把E3 68 改为 00 23 就可以了,哈哈,很简单吧。

  我一般用WINHEX软件修改,打开那个程序文件,然后搜索e3 68 加上后面多几位红框里面的数字,以便可以找到唯一的地址 (记得要把空格去掉),然后就是把他改为00 23就行了,存盘,补丁就做好了。

  你如果把他直接拉进IPA也行,用winrar打开IPA后,放入APP目录即可,这样你的作弊版的IPA就做好了。

  这应该是我大学毕业后写得最长的一篇文章了,哈哈,感觉象在写毕业论文了,还要图文并茂。希望对你有些帮助。

  最后应该说,修改游戏最大的难题不是技术,而是自己的兴趣爱好,如果没有兴趣,那基本上是不可能改任何游戏的。只要有兴趣,那么改游戏是很有意思的事情,尤其是成功后的那种成就感和喜悦感。

  如果你真的把IPOD4G和我的这篇帖子都读完读懂了,那么说明你是很有兴趣改游戏玩的,希望早日弄成你的第一个自己的作品。

相关视频

    没有数据

相关阅读 使用GDB调试RB-tree的问题总汇流浪先知游戏攻略 流浪先知新手入门指南LOL小游戏指尖召唤师测试资格怎么获得 LOL指尖召唤师小游戏预约方lol指尖召唤师小游戏怎么玩 英雄联盟指尖召唤师小游戏介绍Wegame电脑游戏怎么用手机玩 Wegame手机玩电脑游戏教程Steam免费游戏怎么领 Steam免费游戏一键领取教程dnf防沉迷怎么解除 dnf防沉迷身份证修改教程战锤混沌祸根游戏攻略 战锤混沌祸根剧情流程攻略

文章评论
发表评论

热门文章 携号转网什么时候实行谷歌浏览器“Adobe Fl2015双11怎么抢红包_2odysseusota4win图文教

最新文章 2022蚂蚁庄园6月22日今2022蚂蚁庄园6月21日今 2022蚂蚁庄园6月20日今日答案 度量衡是我国2022蚂蚁庄园6月17日今日答案 夏季甜品烧仙2022蚂蚁庄园6月16日今日答案 为了减肥每天2022蚂蚁庄园6月15日今日答案 卫生纸和面巾

人气排行 B站答题答案大全 哔哩哔哩答题答案2019弹幕ipad3和ipad2的8大区别nfc功能是什么 nfc怎么用 NFC功能的手机有哪全国青少年禁毒知识竞赛在线答题 全国青少年bd版是什么意思?bd版和dvd版哪个好?手机cpu天梯图2020最新版11月 手机cpu性能天BD职位是什么?BD职业解析!硬盘划分主分区、扩展分区、逻辑分区、活动