简单绕过BanG Dream校验

2018-05-24 2,129 ℃

2.2.0

上周去参加CP22,炸梦演出时的人比想象中的要多,给我一种国服能很火的感觉,于是我决定下回日服顺带摸鱼一篇文章

游戏不懂什么版本开始加入了一点校验,用之前的方法打完歌会报错,不过由于当时已经弃坑了,所以也没看过,这次就来仔细研究一下吧

很容易就判断出错误是由服务器返回的,所以问题肯定就出在回传的数据包里,于是直接把数据包解开看看究竟是什么情况

正常打歌

{
"musicDifficulty": "normal",
"score": 82426,
"combo": 252,
"clearStatus": "full_combo",
"eventId": 43,
"perfectCount": 210,
"greatCount": 42,
"goodCount": 0,
"badCount": 0,
"missCount": 0,
"userDeckTotalPower": 16371,
"totalNotesCount": 252,
"tapCount": 213,
"oneNotesMaxScoreInfo": {
"score": 324,
"combo": 215,
"skillFactor": 1.1,
"notesType": "Perfect",
"isFever": false
},
"finalLife": 1000
}

修改版打歌

{
"musicDifficulty": "normal",
"score": 86283,
"combo": 252,
"clearStatus": "full_combo",
"eventId": 43,
"perfectCount": 246,
"greatCount": 6,
"goodCount": 0,
"badCount": 0,
"missCount": 0,
"userDeckTotalPower": 22797,
"totalNotesCount": 252,
"tapCount": 0,
"oneNotesMaxScoreInfo": {
"score": 375,
"combo": 220,
"skillFactor": 1.1,
"notesType": "Perfect",
"isFever": false
},
"finalLife": 1000
}

很明显了,问题就出在tapCount上,这个tapCount就是一共在打歌的时候点击了几下屏幕,所以会有乱点屏幕就能绕过校验的方法,那么接下来只要给tapCount一个合理的值就行了

tapCount的值是由set_tapCount写入的,往上找可以发现是读取的InGameRecord.get_TapCountInGameRecord.set_TapCount往上也找不到调用了,所以就直接修改InGameRecord.get_TapCount的返回值

在IDA中查看函数

发现这个函数其实是直接读取字段

原本打算用Random.Range来生成合理范围的随机数,不过这样至少需要3行以上的代码,放不下,所以就先用其他的方法,把tapCount换成其他字段,其中perfectCount就是一个很好的选择,因为非100%P的情况下perfectCount永远会小于comboCount

所以直接把0x54改为0x34就OK了

其实要找地方塞下代码也是没问题的,比如修改完NoteSpecialBase.miss函数后剩下的地方,或者是il2cpp在大部分函数中都会有的异常处理用的代码,游戏正常运行的话是不会执行到这些代码,除非是触发异常了,不过那个时候游戏也该崩了

【2018-10-27】碧蓝航线Live2D提取

2018-10-27 v1.2 完善4种Segment 2018-10-23 v1.1 修复易拉罐等SteppedSegment问题 正文 自从看到敦刻尔克的live2d后就决定要提取一发来射爆,经过简单的分析...

阅读全文

Unity下的注入与修改

已经有很长一段时间没写过游戏修改的文章了,一个原因是现在越来越多的手游厂商都开始给游戏上各种各样的保护,以前简单的直接修改dll或者直接修改so早已经不...

阅读全文

少女前线Live2D解密

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

阅读全文

8 条评论

      1. 我目前就是這樣用的,想要破解這個只是看到有人做得到所以自己也想來試試看XD

  1. 另外有找到偵測模擬器的方法 private void DetectAndroidEmulator(); // 0xA2CA18
    沒意外直接BX LR就可以跳過 下班回家後再來試試

  2. 日版最新版2.4.0的APK 在UserAuthAPI底下多了getSignatureHash和calcSha1兩個方法
    估計是用來驗證簽名的? 現在APK不管有沒有修改過只要簽名不一樣 登入時就直接閃退了
    不知道能不能繞過就是

  3. 之前我改的時候除了改這裡以外
    還會把GetCheatUserTypes()幹掉
    雖然這邊不改不影響打歌 但不改總覺的心裡毛毛的…

欢迎留言

9 + 0 =