綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[修改版] 简单绕过BanG Dream校验

[複製連結] 查看: 1074|回覆: 0|好評: 0
跳轉到指定樓層
樓主
沢口麻衣 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2018-8-20 15:29

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
转载,希望对BD修改的有帮助

此方法是不需要点击屏幕即可正常完美结算




游戏不懂什么版本开始加入了一点校验,用之前的方法打完歌会报错,不过由于当时已经弃坑了,所以也没看过,这次就来仔细研究一下吧
很容易就判断出错误是由服务器返回的,所以问题肯定就出在回传的数据包里,于是直接把数据包解开看看究竟是什么情况
正常打歌
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em]9

[size=1em]10

[size=1em]11

[size=1em]12

[size=1em]13

[size=1em]14

[size=1em]15

[size=1em]16

[size=1em]17

[size=1em]18

[size=1em]19

[size=1em]20

[size=1em]21

[size=1em]22

[size=1em]23

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



修改版打歌
[size=1em]
[size=1em]1

[size=1em]2

[size=1em]3

[size=1em]4

[size=1em]5

[size=1em]6

[size=1em]7

[size=1em]8

[size=1em]9

[size=1em]10

[size=1em]11

[size=1em]12

[size=1em]13

[size=1em]14

[size=1em]15

[size=1em]16

[size=1em]17

[size=1em]18

[size=1em]19

[size=1em]20

[size=1em]21

[size=1em]22

[size=1em]23

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



很明显了,问题就出在tapCount上,这个tapCount就是一共在打歌的时候点击了几下屏幕,所以会有乱点屏幕就能绕过校验的方法,那么接下来只要给tapCount一个合理的值就行了
tapCount的值是由set_tapCount写入的,往上找可以发现是读取的InGameRecord.get_TapCount而InGameRecord.set_TapCount往上也找不到调用了,所以就直接修改InGameRecord.get_TapCount的返回值
在IDA中查看函数
发现这个函数其实是直接读取字段
原本打算用Random.Range来生成合理范围的随机数,不过这样至少需要3行以上的代码,放不下,所以就先用其他的方法,把tapCount换成其他字段,其中perfectCount就是一个很好的选择,因为非100%P的情况下perfectCount永远会小于comboCount
所以直接把0x54改为0x34就OK了
其实要找地方塞下代码也是没问题的,比如修改完NoteSpecialBase.miss函数后剩下的地方,或者是il2cpp在大部分函数中都会有的异常处理用的代码,游戏正常运行的话是不会执行到这些代码,除非是触发异常了,不过那个时候游戏也该崩了


「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)

評分

參與人數 5碎鑽 +5 幫助 +4 收起 理由
芷夜 + 1 + 1 非常讃
andychnd + 1 + 1 非常讃
t0157429 + 1
1test + 1 + 1 非常讃
趙麥斯 + 1 + 1 讚一個!

查看全部評分

收藏收藏1 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則