物品复制原理操作原理和服务器程序原理解说
复制基本上都是设计客户端和服务器端时候考虑不周全存在的BUG(漏洞)不同的BUG原理当然也不一样
举列:大家应该都知道MU 0.96Y版的经典复制
仓库复制表面原理:
要复制物品者为A,补助设置者为B。
1:A去仙踪林,点卡隆出现对话
2:B一直交易A,并且要快,一直到A那出现交易提示。这时A选确认,不过还有个交易提示,第2个要选取
消。A取消交易界面,但是B的交易栏必须还在,否则失败。
3:A取消交易,B不要取消交易,也不要动,B的交易栏还在的。这时A取消交易后就能动了,去仓库,把A
要复制的东西存进去。
4:回去交易B,B点确认,然后A或B取消交易,复制成功。
这个复制服务器BUG原理:
1 检查交易监控和处理封包时间不同步(是指分开线程处理所以有可能产生的不同步)所以在某一谈话状态下能非法产生交易。
2 一方离开取消了交易状态而另一方不取消交易状态这个原因是因为设计时候没考虑到会有这样的非法交易出现。
3 交易系统用新结构记录2人的身上装备(所以在身上装备放回仓库再次交易时候取消时候记录会刷新身上的本来装备==又得了一套。)
本来记录2人装备是为了防止封包外挂交易非法丢弃装备达到复制效果的,不过却因为另外的BUG上面说的监控的不同步变成另外BUG

举列:SA以前的回档复制
这个操作原理估计老玩家谁都知道。
以前经常回档的时候准备回档时候,A的宠物要复制,那么A先下线。再上线交易B把宠物给B,然后B马上下线。
A就在线等到回档掉线。这样下次上来A B身上都有宠了……
服务器BUG原理
因为大家在服务器内存的资料是按照几分钟自动存一次进数据库的
A下线==把内存数据保存进数据库,A上来交易给B后B下线又==保存B的内存数据到数据库,A现在在线等。
那么关键在这个时候分2个情况了:
1 如果到了自动保存时间先保存了在线的数据再掉线的话。那么A在线的数据又被存进去了==A的宠物交易了所以==复制不成功。
2 如果是还不到自动保存的时间现在因为被攻击而掉线所以下次上线的时候A读取数据库的资料因为数据库在上次A下线后都没被保存过资料所以还存在宠物,而B也存在交易后的宠物所以就==复制成功
其实假如自动保存时间是5分钟简单说就因为攻击使得服务器的重起的时间不到5分钟又重起一次就有机会产生上面的第2种可能性导致回档复制
其他的复制也有很多只举2个列子,都是因为服务器或者客户端设计的漏洞。
1 有些漏洞是设计时候不可能想全面的
2 一些其实是游戏制作知道可能存在的漏洞只不过处于很多方面的考虑服务器的效率,资金,很多方面的考虑在内折中处理而已。比如很多游戏为了节省资源不为每个包进行当时数据合法性检查,客户端可能在这个发这个包。但是写外挂的朋友就可以用封包在这个时候发这个包会产生想不到的效果
希望这个会对一些想了解原理学习知识的朋友有帮助达到抛砖引玉的效果