Bilibili《风叶穿行》分数成就值修改

截止2022年6月18日,在网站首页中含有一个彩蛋,类似与谷歌游览器小恐龙一致解闷游戏。

写这篇文章之前,一直纠结到底写不写,从其他人来看,修改一副成就横图图片没多大意义,并不会有什么营养,多数打上作弊标签?

接下来纯属鄙人日常记录:

接下来从前端程序员视角解剖分析

在首次游玩取得20分结束,大致判断无反作弊机制,纯纯“小游戏”,确定游戏逻辑运算不会通过服务器计算返回,现在的问题是如何修改分数。

有几条路可以走,第一条,修改引擎的重力,让玩家一直飘浮,这样在调用游戏函数取得分数;第二条,对生成分数时对其修改。

呃,看起来后面更简单 :>,  动工

为此调出开发者工具,首先对分享按钮的上绑定的事件分析,由于是单击触发,因此在事件监听一栏Click中找,在Click中需要先排除document、body这类,因为本身它DIV标签,不会在页面或身体上,剩下的div标签含option-bubble类便是关键。

点击后方链接,工具将直接引导到对应的js文件上。

此时可见游戏逻辑集中在activity.hdslb.com域名下的odXH9yzdsj.js脚本中,格式化代码后,在6602行就是触发“成就图片”关键。

                            this.domElements.shareEl.onclick = ()=>{ 
                                this.lastActive = performance.now(), 
                                (0, 
                                v.SZ)({ 
                                    type: "click", 
                                    c: "banner_game", 
                                    d: "end_page", 
                                    e: "share" 
                                }, { 
                                    msg: JSON.stringify({ 
                                        id: 0, 
                                        game: "叶间穿行", 
                                        score: s.XH.score,
                                        login: !!window.__BiliUser__?.cache?.data?.isLogin 
                                    }) 
                                }), 
                                (0, 
                                lB)(s.XH.score, this.domElements.scoreTextRef) 
                            }

从now()依次调用更改匿名方法内部变量,在第三个参数内的s.XH.score便是分数

新的问题随之而来,要改什么?

从最终的图片中,我们有几个地方修改,分数、超过多少玩家以及对应的描述,一共三处

现在让我们通过修改游览器内存中值实现,在这里当然要借助开发者工具实现,由于odXH9yzdsj.js包含在一个匿名方法中,无法在window中找到它,这里便需借助断点完成。

第一步:打开首页,调出开发者工具,再次重载页面。

第二步:切至Sources,在Page内找到activity.hdslb.com,展开直到下面odXH9yzdsj.js,点击打开。

第三步:格式化代码,通过页面搜索share关键词,找到6602行打上断点。

第四步:开始游戏,点击“分享按钮”,触发断点。

第五步:切换到开发者工具Console中,输入:

// 在断点阶段下,输入
s.XH.score = <分数>
// 调用下接口 查询对应分数百分比
this.domElements.scoreTextRef.r1 ="你超过了<span>百分比%</span><br/>的玩家!";

// 按照下方的描述提供填入
this.domElements.scoreTextRef.r2 = "";

注意这里的百分比,B站会调一个api,具体函数:

this.domElements.shareEl.onclick = ()=>{ 
    this.lastActive = performance.now(), 
    (0, 
    v.SZ)({ 
        type: "click", 
        c: "banner_game", 
        d: "end_page", 
        e: "share" 
    }, { 
        msg: JSON.stringify({ 
            id: 0, 
            game: "叶间穿行", 
            score: s.XH.score,
            login: !!window.__BiliUser__?.cache?.data?.isLogin 
        }) 
    }), 
    (0, 
    lB)(s.XH.score, this.domElements.scoreTextRef) 
}

按照对应修改的分数打开,https://api.bilibili.com/x/web-frontend/score/score?score=分数,查看pct字段,数值是0-100。

对应描述,分5档,随机一个:

[
  ["天赋异禀·疾风征服者·被22选中的人!", "成就达成,进击的22!"], 

  ["平平无奇小天才ㄟ( ▔, ▔ )ㄏ ", "不愧是你,22拯救者!"],

  ["再接再厉,芜湖起飞!", "22必不能轻易认输!", "是时候展现真正的技术了!"], 

  ["就这,绝对不是我 (°ー°〃)", "是意外啦,22绝不会轻易狗带!"], 

  ["身残志坚,答应22不要放弃治疗!", "这河狸吗?<br/>o(一︿一+)o  ", "是什么糊住了22的眼睛?是风! ", "落地成盒,虾仁猪心 (ノへ ̄、)"]
]

第六步:断点下一步,此时正常触发生成图片。

—— 感谢抽出时间阅读

转载注明

转载请注明: 转载自Cabbagelol 后院

本文链接地址: Bilibili《风叶穿行》分数成就值修改

捐助 ↗

博客捐助

站点简介

负责记录Cabbagelol的总结,或者共享有趣的内容,这就是后院的最重要做的事情⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄。

线上游客

目前实时游客: 2

其他

备案:粤ICP备15107172号

Copyright © 2015 - 2024 Cabbagelol. All Rights Reserved. Powered By Wordpress(EverBox).