好友
阅读权限 255
听众
最后登录 1970-1-1
Hmily
发表于 2012-12-5 17:00
对于游戏修改,有很多方法,如果存档没有加密,则可以用十六进制法进行修改(相信以前用过NOKIA的友友应该都会吧!),但是如果加了密的,那就没有法那样修改了,只能通过内存修改,在其它平台上,如 Symbian:有八门神器,android:也有八门神器,PPC:有金山游侠,而我们IOS却没有一个好的软件来实现,然而,上天还是公平的,没有给我一条绝路,可以用断点法,内存法来修改,新的游戏出来后,一些高人都会放出游戏的断点,但是有些友友却不会用,由此本人出一个用断点修改游戏的方法,包括找断点和修改!
对了,这里重要说明一下,有些友友看了这篇贴可能会说太长了,看不懂,我在这里说一下,我本人是学化学的,英语高考50分,电脑方面目前只停留在会开机和关机(这篇贴子是请朋友代写的,呵呵!),但是我看了他们的贴子后,经过慢慢研究都会一点点了哈,所以,请大家用点心,就如ID:stoneagegz 说的那样,修改游戏不完全靠技术,兴趣是很重要的因素!
本教程所用到的软件我尽量上传,最好进CYDIA下,因为我也不知道要那些依赖包,
注意:本教程中给出的断点只适用于Inotia3-v1.1.9的版本!但前面找断点的方法是一样的,已上传要修改的游戏:Inotia3-v1.1.9
另外,有FY可能会问为什么不在电脑上修改,当然在电脑上修改要方便得多,但是你不可能每一分钟都把电脑背在身上吧,所以只要你学会了用这种完全在手机上进行游戏修改的方法后,那么在外面你都可以进行HACK了哈!
正文:
1 进入 Inotia3文件夹内,找到并复制游戏主程序到/var/mobile下。
2 进入手机终端:Terminal
输入:su 后 回车,(回车与电脑上的不一样,如图中的return)
输入:alpine 后 回车 (注意输入alpine后是看不见的,如果输入错了,是进不了的,再复这两步就可以了,并且一定要注意大小写 下同)
输入:otool -tv Inotia3 > Inotia3.txt 后 回车(此步操作是反编译游戏主程序 注意:Inotia3中的第一个字母为大写的i 不是小写的l) ,等待,直到出现以下画面再进行下一步操作!
输入:less Inotia3.txt 后 回车(此步是查看刚才反编译后的文本)
接下来的就很关键了,找断点,那么如何才能找到断点呢?比如游戏中的金钱,一般在程序中的名称都是Money ,Gold 经验:Exp 技能点:Skill 等等,那么也许你已经明白了,对,我们就在反编译后的文本中找这些关键词。
3 那么就以Money为例,在文本中来找!
输入:/Money 后 回车 (注意大小写,如果你输入的是MONEY,那么你永远是找不到正确的断点)
(上图是怎么回事呢?这个要说一下,如果你不横屏和隐藏键盘的话是看不见找到的地址的,怎么横屏我就不说了,隐藏键盘:双击屏幕即可,要恢复键盘,同样双击)
那么看见没?出现了有三个有Money的地址,其实还有很多,在这个游戏中就有:_INVEN_GetMoney; _INVEN_SetMoney ; _INVEN_AddMoney;_INVEN_MinusMoney;_ITEMSYSTEM_MakeMoney等等,如果要继续找下一个地址可以按手机上的n键就行了(同样要横屏和隐藏键盘才看得见新出现的地址),所以说起来容易,但做起来就难了,为什么呢?上面出现了那么多关于Money的地址,这就麻烦了,到底是那一个呢?我只能一个一个的调试(高人那就另当别论了哈!),这儿再说一下,我在本游戏中找技能点的正确断点时,发现了有句是这样的:_SKILLMENU_LearnSkill (学习技能),当时我那个高兴啊,以为就是它,不过一分钟后我就失望了,不是它,正确的是:_CHAR_SetSkillPoint (设置技能点),所以说找正确断点的过程是很长的,经过我的测试,发现应该是_INVEN_AddMoney,那就好办了!
看上图有记号的地方,关键词下面的数字是00052820,这就是金钱的断点,记下这个数,下面有用的,接下来就是调试修改!
4 退出Terminal ,进入游戏中!
刚开始游戏人物的金钱!
后台运行游戏,这个很重要,如果游戏都退出了,那还怎么调试呢?呵呵!
再次进入Terminal ,进入Terminal 后,前两步操作与第一次进入Terminal 一样,
输入:su 后 回车
输入:alpine 后 回车
输入:ps ax 后 回车(此步是找后台运行游戏的ID,很重要哦!)
如何看游戏的ID,一般情况下游戏的ID都在最后几排的(我还从来没有遇到过找不到游戏ID的,),并且有一个很明显的特征,看上图中后面的记号,是不是很眼熟呢?对了,那就是我们安装游戏,软件的路径嘛,如果后台你只运行了这一个游戏,那么它前面的数字一定是该游戏的ID,那么这个游戏的ID就是4872,当然,你们的是不一样的,要看你们自己的ID,不但每个人不一样,就算是自己的,每次进入时,游戏的ID都会不一样哦,这个要记住哈!
输入:gdb -p 4872 后 回车 (此时游戏会暂停卡住,音乐也会停止,但实际上是没有的,如果你玩的是有时间记录的游戏,那么你最后看游戏时间是一直在走的,呵呵)
这个要等好一阵子,最好这个过程你别动手机,直到出现以下画面才继续后面的操作!
输入:break *0x52820 后 回车 (此步是在0x52820处设置断点,52820是不是在哪儿见过呢?对了,其实就是上面找到的金钱断点啊,还有,这里也可以这样输入 b *0x52820 b *0x00052820 break *0x00052820 这四种输入方法都是同一个命令,就是简写与全称的关系)!
输入:c 后 回车(此步是能让游戏恢复运行的命令)
5 让Terminal 后台运行,千万不能退出啊,然后再次进入游戏,去打怪,直到打怪出现金钱,捡金钱时(注意看下图中的金钱数为多少)游戏又会暂停!
证明我们设置了这个金钱断点0x52820是对的,当然也不一定,如果设置了其它有关Money地址的断点也可能会暂停,其实在游戏调试过程中经常会出现这样的情况,那么如果设置的断点是错误的,基本上有两种情况:A 打怪后捡金钱时不会跳出断点 B打怪后捡金钱时会跳出断点!那么我就来分别说一下:(红字部分为分支)
A 打怪后捡金钱时不会跳出断点
如果我们在调试游戏时输入的断点为:break *0x527f8(前面图中_INVEN_GetMoney下的地址,一般情况下都是从第一个与关键词有关的地址开始测试的)!
回到游戏中,打怪后出现金钱,但捡钱时游戏没有暂停,则说明我们设置的断点是不正确的,这时便要回到Terminal中继续设置下一个断点,但当你回到Terminal中时,你会发现是不能再设置断点了的,因为没有在GDB中运行,总不可能关了Terminal和游戏,再开Terminal和游戏,这样会很费时间的,实际在电脑上测试时出现这样的情况,可以按ctrl+c来回到GDB,那么在手机上呢?点下图中做记号的地方!
再点^C,此时看是不是又回到GDB了呢?
这时最好把刚才设置的错误断点取消了!
输入:disable 1 后 回车 (因为我们设置的这个断点是第1个,当然就取消1,也可以输入:disable 他的意思是取消当前设置的所有断点),此时就可以继续设置下一个断点了哈!
B 打怪后捡金钱时会跳出断点,这种情况最为正常了,虽然跳出了断点,但是经我们调试后发现是不正确的,那么我们就一定要取消它,方法与上面的取消方法一样哈!为什么一定要取消呢?很简单嘛,当我们设置下一个断点进行测试时(假设此时设置的断点是正确的),那么如果没有取消刚才那个断点,它又会跳出来,当然就会影响我们的测试进度,还有一种情况,当跳出断点后,你在GDB中输入:c 回车(让游戏恢复运行),但是你会发现断点又跳出来了,这样就进入了一个死循环,那么你唯有取消这个断点才能继续游戏的,所以如果是错误的断点,一定要取消它!
接到上面的讲,到底正不正确?还得往下看,再次后台运行游戏,不能退出,进入Terminal ,会看见以下图,此时发现跳出了我们设置的断点,难怪游戏会暂停啊!
输入:i r $r0 $r1 $r2 $r3 $r4 $r5 $r6 $r7 $r8 $r9 $r10 $r11 $r12 后 回车(此步是查看r0-r12的寄存值)
出现以下图:
我们会发现r0-r12的寄存值,其中只有r0的寄存值为1,1是什么意思?其实就是我们捡到的金钱为1(上面的图中),如果捡到的为20,则r0 后面的寄存值就应为20,反知,如果寄存值为10000,那么就说明我们在游戏中也就捡到了10000的钱,由此,我们就可以大胆的猜想一下,如果想马上变得很有钱,那么很简单,只要将r0 后面的寄存值改为你想要的数就可以了,让程序认为你是中了几十个双色球的一等奖哦!
输入:set $r0=88888888 后 回车
输入:c 后 回车(游戏恢复)那么到底修改成功了没有呢?唯有进游戏查看!
回到游戏看一下钱是多少了呢?哇,天啊,这正是我们输入的88888888,哈哈,成功了哈!
好了,还等什么?马上保存游戏吧,注意:在游戏没有保存前不能退出Terminal,如果退出Terminal,那么游戏也会退出,这是真的哦,要不然,你前面做的工作都浪费了哈,只要保存了游戏就可以退出Terminal了!
再放出经验断点:break *0x66330 set $r0=99999999 立马110级
用法:设置断点后,去打怪,杀死后,游戏暂停,回到Terminal 中输入:set $r0=99999999,后面的照上面的教程做就是了,回到游戏看一下,真的是110级了哦!
技能点断点:break *0x2ec7c set $r1=500 如果不够,加完了再来一次就行了!
用法:设置断点后,在游戏中加技能点,当按下YES后,游戏会暂停,回到Terminal 中输入set $r1=500 ,再输入c 让游戏继续运行,回到游戏中你会发现技能点多了,此时要注意不要再加点了,如果再加游戏又会暂停啊,所以你就应该第一时间保存游戏!
至此,游戏教程结束,修改游戏不完全靠技术,兴趣是关键,耐心很重要!
帖子中所用到的文件都在这下面:
Inotia3-v1.1.9-Netnetbug.part1.rar
5.61 MB, 下载次数: 36, 下载积分: 吾爱币 -1 CB
Inotia3-v1.1.9-Netnetbug.part2.rar
5.61 MB, 下载次数: 35, 下载积分: 吾爱币 -1 CB
Inotia3-v1.1.9-Netnetbug.part3.rar
5.61 MB, 下载次数: 35, 下载积分: 吾爱币 -1 CB
Inotia3-v1.1.9-Netnetbug.part4.rar
115.97 KB, 下载次数: 19, 下载积分: 吾爱币 -1 CB
所用到的文件都在里面.rar
4.71 MB, 下载次数: 51, 下载积分: 吾爱币 -1 CB
发帖前要善用【论坛搜索 】 功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。