《血饮天下》里那个被玩家称为“无限刷元宝”的血饮漏洞,其实就藏在沙巴克攻城战结束后的天下结算逻辑里。去年11月,漏洞行会里一个叫“老刀”的血饮战士,在攻城刚结束时没点确认奖励,天下直接小退再上线,漏洞背包里凭空多出三份攻城礼包。血饮他把截图发到群里,天下没人信。漏洞直到第二天,血饮三个人用同样手法各刷了十几万元宝,天下服务器经济才开始崩。漏洞
这个漏洞的血饮原理不复杂。攻城战结束后,天下系统会向获胜方所有在线成员发送一封邮件,漏洞附带元宝和声望。正常流程是玩家点开邮件,奖励入包,邮件消失。但老刀发现,如果在小退前不点邮件,系统会判定“奖励未领取”,重新上线时再发一次。关键在于小退的时机——必须卡在攻城结束后的第17到23秒之间。早了,系统还没生成奖励;晚了,邮件已经自动标记为已读。这个窗口期短得离谱,但恰好能被手动操作卡住。
我后来自己试过三次。第一次手速慢了,只拿到一份。第二次卡在21秒,背包里多了四份礼包。第三次更邪门,小退后上线,系统不仅重发了奖励,连攻城战期间击杀的声望也一并重置了。那一刻我意识到,这根本不是简单的重复发邮件,而是整个结算模块的计时器没做幂等处理。换句话说,服务器把“小退”当成了“新会话”,重新跑了一遍奖励发放的代码。
消息传开的速度比预想快得多。三天内,全区全服有超过两百个账号在刷。有人专门写了按键精灵脚本,把窗口期精确到毫秒。交易行里元宝价格从1:100暴跌到1:800,强化石被扫空,连平时没人要的垃圾装备都挂上了天价。最夸张的是“风云再起”服务器,一个叫“钱多多”的商人,用漏洞刷了三百多万元宝,转手在第三方平台卖了四万多人民币。官方论坛炸了锅,但客服最初的回应是“数据异常,正在核查”。
真正让事情失控的是漏洞的变种。有人发现,如果在攻城战期间用特定顺序切换装备——先脱武器,再穿衣服,最后戴项链——结算时系统会误判角色为“新创建”,额外发放一份新手礼包。新手礼包里虽然只有五千元宝,但胜在稳定,不需要卡时间。这个变种传播得更广,因为操作简单,连手机端都能用。我认识的一个学生党,靠这个漏洞两天刷了八万元宝,换了一整套+7装备。他跟我说:“反正官方也不管,不刷白不刷。”
官方最终在12月7号凌晨紧急停机维护。公告只写了“修复攻城战结算异常”,没提补偿方案。维护结束后,那些刷了元宝的账号大部分被封了三天,但元宝没回收。老刀被封了七天,解封后发现自己背包里的元宝还在,只是交易行挂的单全被下架了。他苦笑说:“这波不亏,七天换十几万。”而那个卖元宝的“钱多多”,账号直接消失,连角色名都搜不到了。
这件事过去大半年了,现在游戏里偶尔还能听到有人聊起“血饮天下漏洞”。新玩家当传说听,老玩家则摇头说:“那会儿元宝跟废纸一样,一把屠龙刀换不来两包烟。”我后来没再刷过,但每次攻城战结束,都会下意识看一眼邮件——那个17秒的窗口,像一道疤,刻在服务器的代码里,也刻在那些靠漏洞发财又迅速被封号的人的记忆里。