小白一枚,大牛可以忽略了,这是篇很基础的破解 先来个广告,不是,是感想,我刚开始跟着七少月老师的视频入门很快!! 话说最近看完了法总u3d的视频,然后,勾起我当年玩金庸群侠传x1.05的回忆,这是松鼠大大的游戏,半瓶松鼠的作品,承载着我们这些沧桑老男人的武侠梦
这篇破解没有丝毫不敬之心,只为那些苦苦刷周目解锁武功的人,甚至一不小心一个武功解锁太早而废掉了一个存档从来的人,省一点时间,多一些精力去学习
好了,废话到此为止,下面开始正题
1.androidkiller反编译,u3d游戏一枚,如下
2.打开反编后的文件夹,寻找关键u3d代码 我的是在com.hanjiasongshu.jygame\Project\assets\bin\Data\Managed里,这些dll里全是c#的代码,关键代码一般都在Assembly-CSharp这个dll里
3.用法总大大给的.net reflector载入,具体请参考法总的视频文章,我们只需要会载入,搜索,修改,保存这些基础功能就可以了,关键:要把reflexil1.6这个tool附加进去,修改必须用它
4.开始我们的工作,首先热热身吧,我们知道游戏里有2种货币,银子和元宝,而元宝是可以用来洗装备的,而且不容易得到,于是我们想把元宝改了,搜索yuanbao字符串,找到get_Yuanbao()这个函数,它是这样的
public static int get_Yuanbao() { return GetParam("yuanbao");} 很显然,这是游戏返回元宝数量的关键函数,看它的汇编代码,只有3行
这里我们把它修改让他返回为定值,删除call 函数调用与ldstr2字符串行,加入 ldc.i4 99999,保存,刷新
发现,c#代码变为 public static int get_Yuanbao(){ return 0x1869f;}
重新androidkiller编译,安装,测试。
5.修改元宝主要是为了刷装备,其他根骨臂力==都方法类似,而我们最感兴趣的一般是人物的行为,操作行为的函数,行为操作的是属性,而人物属性通常应该类似存在一个字典里,同一属性为一个数组,我们先找到初始化人物的关键代码,最简单的搜索“小虾米”或者“铃兰”,注意直接搜中文字符串就行,director已经翻译了 看到有一个叫ExecuteAction的函数,execute是执行action是行动,字面理解它里面包含了很多游戏人物的行为,进入函数,果然,看到了初始化人物属性的代码,一个dictionary.add的方法,从根骨悟性到门派都有,这里的字符串都是代码里用的,修改单一属性时很有用,这里就不一一说明了。 继续往下看,看到skillinstance,这里有一个很长的switch语句,有从case0到case60个case,前面是初始化,后面明显就是对于声明属性的操作了,我们一点一点往下看,里面有买东西,组队,计算天数==很多case,很好理解,需要可以自己修改
我们看到case44与45,发现他是关于武功的判断,而46 47是关于内功,主要的代码理解应该就在这
我们看到if的3个分支,掌握,提升,和已达顶级
if (instance.Level >= instance.MaxLevel)这里调用了maxlevel方法,进入,直接搜maxlevel也能找到,不过由于我经验不足,先找到action更容易理解整体代码,跟进,一个判断最大的函数,防止武功超过20级 这里直接把两个20修改掉,和元宝一样,就修改了上限 游戏里最为关键的是武功解锁,刷周目很烦人,下面进行解锁的寻找修改,如何找到关键代码呢,周目每周解锁武功上限,可以接着ExecuteAction函数往下看,会找到case60
很显然,这个case就是我们要找的,这个解锁是全角色全周目共享的,在globaldata类里面,所以只需要主角+上限就可,看到里面的关键函数AddSkillMaxLevel,进入,里面也有一个maxlevel的判断,这里也需要修改20为50 看到里面有一个GetSkillMaxLevel函数,有add肯定有get啊,这里就是多周目解锁关键,进入 很激动,看到了skilllevel的计算方法,显然,num就是根据周目增加的武功上限(每2周目解锁+1,int可以去掉小数点后保留整数),num2是最终的上限,这里夜也有一次判断了上限是否>20,我们修改2个地方,首先把/2改为*2,这样每周目所有武功上限都+2(一周目刚进游戏就是12),然后把判断的20也改为50 这里就是把03行的div改为mul即可,50改法与元宝相同,就不说了 看下效果:
|