诛仙论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 113|回复: 14

诛仙世界这次道具复制bug的原理,给服务器同学敲警钟!

[复制链接]

159

主题

971

回帖

1448

积分

金牌会员

Rank: 6Rank: 6

积分
1448
发表于 2024-11-22 13:11:58 | 显示全部楼层 |阅读模式
详细介绍一下诛仙世界今天的道具复制bug原理。诛仙世界今天这个bug是一个mmorpg中非常经典的服务器bug,也是检验服务器团队是否成熟的标准之一。在这个bug上翻过车的其实有很多著名项目,比如说九阴、幻塔、笑傲江湖等。也正是因为太经典了,因此经常在开服阶段被很多mmo老手进行试探性测试,诛仙世界这次果然也翻车了,但幸好是删档测试。接下来我来简单介绍一下这个bug的原理吧。
介绍这个bug前必须要理解一个概念叫做数据的异步处理,简单来说就是一个逻辑操作在两个逻辑帧中进行了处理。这么说可能还是太学术化了,举个最简单的例子,比如说交易行交易,加入A在交易行中购买了道具,按照正常人的理解应该是扣钱跟获得道具一步完成。但是由于服务器架构的物理限制,这个操作往往会分为两帧处理,一是获得道具,二是扣钱。但由于两帧之间的时间间隔极短,往往都是几毫秒的时间,因此在普通人的眼里它就是一帧完成的。但是在程序的眼里,这里就有漏洞可以钻了。
一种最愚蠢的实现方式是,第一帧先发送收益,第二帧再扣除道具。这种实现方式的服务器程序往往没有任何的数据安全性概念,因为第一帧与第二帧间隔之间,玩家这个实体对象假如有某种途径能够立刻销毁(比如强制下线),那第二帧的时候就会造成道具扣除失败。最终的结果就是获取了收益,但没扣除掉道具,从而玩家可以利用这个漏洞来实现道具复制。
第二种可能的情况是玩家数据打包过程中的数据发生改变导致数据改变失效的情况,这种情况常发生在切场景或者下线过程中。玩家切换场景跟下线一定会伴随数据打包,而如果数据打包好后,该玩家对象其实已经是一个无效对象了,但假如有逻辑代码还在使用该对象并且对残留对象进行了数据修改,那么这个修改是无效的,因为玩家真正的数据已经在打好的包里了。再举个例子,比如玩家在切换场景时刚好收到了一条扣除道具的命令,此时如果玩家数据正在打包,扣除命令是在打包后执行的,那所扣除的玩家对象实际是残留对象的数据,而真实的玩家数据对象中的道具是没有被扣除的。
解决第二种bug的方式其实也很简单,那就是给对象做异步标识,一些敏感操作发现玩家身上存在异步标识时不允许处理即可。
从这次bug的情况来看,诛仙世界服务器团队的数据风险意识还是蛮差的,如果上线后还犯类似的错误,那真要把主程拿出来祭天了。
回复

使用道具 举报

175

主题

1025

回帖

1556

积分

金牌会员

Rank: 6Rank: 6

积分
1556
发表于 2024-11-22 13:12:17 | 显示全部楼层
你是雪球的虎克吗?
回复

使用道具 举报

215

主题

1030

回帖

1670

积分

金牌会员

Rank: 6Rank: 6

积分
1670
发表于 2024-11-22 13:12:46 | 显示全部楼层
雪球下午发的这个被限流了?
回复

使用道具 举报

179

主题

1023

回帖

1566

积分

金牌会员

Rank: 6Rank: 6

积分
1566
发表于 2024-11-22 13:12:58 | 显示全部楼层
你的id有点意思
回复

使用道具 举报

190

主题

998

回帖

1571

积分

金牌会员

Rank: 6Rank: 6

积分
1571
发表于 2024-11-22 13:13:12 | 显示全部楼层
确实分2步处理,但是以计算机的运算速度,
怎么在这两个指令的间隙中精准的插入另一个操作????
这是能做到的事情???
回复

使用道具 举报

190

主题

998

回帖

1571

积分

金牌会员

Rank: 6Rank: 6

积分
1571
发表于 2024-11-22 13:14:04 | 显示全部楼层
而且正常的信息处理都是在服务器端完成的,返还给本地的已经是处理完的结果,这个时候你还在不在线有区别么?
回复

使用道具 举报

186

主题

1035

回帖

1590

积分

金牌会员

Rank: 6Rank: 6

积分
1590
发表于 2024-11-22 13:14:17 | 显示全部楼层
虎克现在是想唱多还是唱空
回复

使用道具 举报

217

主题

904

回帖

1560

积分

金牌会员

Rank: 6Rank: 6

积分
1560
发表于 2024-11-22 13:14:43 | 显示全部楼层
嘂剠
.
游戏买卖号,就认螃蟹。
.
刧佉

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

190

主题

998

回帖

1571

积分

金牌会员

Rank: 6Rank: 6

积分
1571
发表于 2024-11-22 13:15:41 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

209

主题

1006

回帖

1633

积分

金牌会员

Rank: 6Rank: 6

积分
1633
发表于 2024-11-22 13:15:59 | 显示全部楼层
你讲直白点就是,这主程估计项目接得不多,这种失误都能犯。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|诛仙论坛 |网站地图

GMT+8, 2024-12-5 02:51 , Processed in 0.098825 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表