日服1.2.3

修改可以从返回HP,ATK等数据的URL入手,比如搜索”quests/execute”这样的关键字。因为游戏返回的是json数据,肯定有个解析的过程,跟踪几部后就会发现游戏是使用一个Document类来存放数据,取出数据是使用如document.i(“hp”, 0)形式的代码,所以搜索关键字就能定位到Piece这个类Init函数。
从函数名上就能看出这是初始化数据用的函数,所以可以直接在这里修改,但是由于游戏的MainCharacter(主线人物),Monster(怪物),Unit(玩家的人物)这3个类都是继承于Piece这个类,直接修改的话会导致怪物和人物的值一起修改,原来还想着要不要找其他地方,结果发现在Init函数中官方已经帮忙写了一个判断
QQ截图20150805001501
这下好了,直接在这个else里修改,就只会对自己的人物生效了
首先修改HP,在Init里官方已经展示了HP的存储方法

this.hp = this.maxHp = this.originalHp = (int) (this.document.i("hp", 0) * this.PowerUpRate);

所以就在else里添加一段

this.hp = this.maxHp = this.originalHp = 99999999;

但是实际修改的时候发现这3个变量都是EncryptInt型,官方写的时候是直接用op_Implicit,也就是隐式转换
QQ截图20150805002339
然而这个在Reflexil里没法做到,原本想试试强转,后来翻了下EncryptInt类的代码发现有Value这样一个变量,想都不用想就知道这能控制EncryptInt类中的值,刚好Init里也有一个EncryptInt型的局部变量,所以修改的思路就是先把99999999用Value存进这个局部变量后,再存到hpmaxHporiginalHp里,所以最后修改HP的IL代码就是
QQ截图20150805003338
c#代码

num2.Value = 0x5f5e0ff;
this.originalHp = num2;
this.hp = num2;
this.maxHp = num2;

好了,接下来修改攻击力,攻击力存放的位置是在Piece下的_parameter变量里,跟攻击有关的数值都存放在这里,不过神奇的是,_parameter是一个PieceParameter类型的数组,难道一个人物的攻击力还有多种吗。。。数组大小是由数据包里的formCount控制的,但是我截取了各种数据包也没发现这个值,所以这数组大小就是默认的1,修改攻击力的代码就是这样

this._parameter[0].originalAt = 0x3567e0;

IL代码
QQ截图20150805004344
至此HP和攻击力就修改完了

再扯几个其他的修改方案

Unit类中

LevelUp函数在每次点击人物时调用,可以直接修改成一次30guts

base.level += 30;

LoadHpByLevel函数用于载入升guts以后的血量,这里修改其中num的值也可以达到修改血量的效果
LoadStatusByLevel函数用于载入升guts以后的攻击速度,这里可以修改攻击速度

Piece类中
calcDamage函数用于计算我方人物攻击怪物时的伤害,所以直接修改也等于修改攻击力
メルクストーリア对于作弊还是有抓的,目前来看主要是raid和公会战。对于公会战,因为有空气盾的存在,所以只修改HP达到理论伤害是非常稳的一种修改方法
最后丢一个修改好的Assembly-CSharp.dll
hp 99999999
atk 3500000
http://pan.baidu.com/s/1bnFclFh

少女前线Live2D解密

上周在CP22看到这个游戏两周年了,打算回坑玩一阵,不过上一个号是买的初始号账号密码都忘记了,所以只好开了个新号。然后新皮肤倒是抽到了,不过枪都没有怎...

阅读全文

简单绕过BanG Dream校验

2.2.0 上周去参加CP22,炸梦演出时的人比想象中的要多,给我一种国服能很火的感觉,于是我决定下回日服顺带摸鱼一篇文章 游戏不懂什么版本开始加入了一点校验...

阅读全文

浅谈某NetHTProtect

声明,本文只稍微提一下思路,不提供任何代码~ 这次是第二次写它了,上篇文章讲的也是这玩意,不过这次它加了个新东西,直接暴力dump dll的话会发现method co...

阅读全文

6 条评论

欢迎留言

7 + 2 =