在梦幻西游里,每当周末活动举行的时候,服务器都很卡,这是官方故意设定的?其实真不是故意的。大家肯定不知道为什么?这里就给你们解释一下。
无论是梦幻还是其他游戏的数据都是建立游戏公司专用的高并发内部数据库的时候,id和level是挂钩的。就是说越低级的套装的数据越在小数字上,越高级的的套装的数据越在大数字上,按照服务器设计的规则,id越小对服务器的访问权限越大。
梦幻在过去20年里面多次更新,所以你要获得高等级高id的数据相对容易,但是你要攻击服务器内核的数据的时候就需要低等级低id的高访问权限。这个时候我们就要分析数据库的沉积数据哪一个最低。
梦幻西游的宝宝的数据最低的level是大海龟、海毛虫、巨蛙。由于程序的设计的问题,我们要访问数据库数据的话,有一个问题需要考虑,那就是这三个同为初始level0哪一个的数据比较靠前,能成为我们访问数据库的攻击点,实际上应该就是巨蛙最靠前。
梦幻西游最新的数据存储是A+B型的,也就是说类似于奇安信虎符算法,客户端只留存一半的数据,这个数据在服务器上进行拼接,就可以获得完整的数据。我进行测试后发现。两种转化方式都可以确定巨蛙在服务器的数据id应该是1或者0。
巨蛙:
ascii:5d e8 86 d9
16进制e5b7a8e89b99->7a 8b 99
由于数据堆栈访问的容量不同,在20年前的计算机普遍内存都很小,硬盘也不大,所以说要使游戏流畅id=1、或者id=0,需要写入超级用户权限,所以说要使数据占用堆栈尽量小不要超出堆栈大小,所以说需要相应的存储字符要小。我们看到的数据很有意思,我们看到巨蛙的ascii有2个字符位置、16进制虎符存储有3个字符位置,这说明了同等与大蝙蝠、大海龟、海毛虫等数据存储少了1个字符的位置。但是要知道所有的数据库的存储方式都是统一的,也就是说0级的宝宝的名字的存储字符应该都是3个字符,这个时候我们就可以在多余的1个字符位置上进行溢出,并写入命令了。
由此可见,随着游戏不断优化更新,对服务器的要求就越来越高,这就是为什么出现卡顿的原因。