我爱辅助论坛

 找回密码
 【点我注册】

QQ登录

只需一步,快速开始

查看: 2645|回复: 7

[文章] WEP溢出总结 三

[复制链接]

签到天数: 11 天

[LV.3]偶尔看看II

发表于 2015-2-28 19:29:38 | 显示全部楼层 |阅读模式
如果你对补码有一定的了解了!那么接下来的内容你讲更容易的理解!
溢出并不是不可计算的!否则,出来的结果会是一个随机数,而且每次都不一样,这样的结果才是我们无法捕捉的!
那么,接下来我就讲讲我对计算机中游戏溢出的理解。
比较常见的商城购买溢出、合成溢出,其实都有一个逻辑关系:
**********************************************************
若 拥有的钱币 ≥ 支付的总金币 成立,
则  
    如果 空余背包数量 ≥ 购买物品组数 ,则 消耗钱币 且 获取物品,剩余金币=拥有钱币-支付钱币;
    如果 空余背包数量 <购买物品组数 ,则 提示背包不足;
若 拥有的钱币 < 支付的总金币 成立,则 无法购买物品 且 提示钱币不足。
当然,购买的成立条件根据游戏限制的不同,所设置的验证(也就是条件判断)不一样。
*****************************************************************************
上面的关系搞清楚后,就不难理解溢出后为什么会既给物品又给钱币!
存在溢出BUG的条件是游戏编程时将具有一定含义的数量值定义为有符号了,若是无符号数,不会溢出(不包括)!(这是我的理解!)
举例,魔幻山(这个游戏已经被很多大神讲了!理解起来方便)
我们以 单价为300000=493E0的高级经验果为例!
根据之前讲过的补码,我们知道负值范围(双字)是8000 0000~FFFF FFFF。
结合上面的逻辑关系,要想溢出,则 单价*购买数量=支付总金币的范围就是8000 0000~FFFF FFFF。
那么,理论达到溢出效果的购买范围是8000 0000/493E0=1BF6~FFFF FFFF/493E0=37EC。
结果,封包中数量位置填写1BF6达不到溢出效果,这里有个坑:有些数值的乘法与除法的逆运算并不相等,这是因为除法运算会舍去小数部分。
所以,你把理论值计算出来后要加以验证:493E0*1BF6=7FFEB940<8000 0000,则493E0*(1BF6+1)=80034D20,此时满足溢出条件。                                                                  493E0*37EC=FFFD7280<FFFF FFFF,此时满足溢出条件。
                                                                 则,满足溢出的购买数量为1BF6~37EC。
PS:还有其他的值可以溢出,但是与这范围内的值溢出是不同类型的。下面开始计算:
高级经验丹 单价为 493E0。
①在封包中的数量位置填写 1BF7,则产生溢出效果,如下图

(图片说明:点红这2个字只是为了方便看,而不是递进。)
首先我们看得到多少购买的东西,截图里看不清楚,卖掉后看提示信息是7159=1BF7 与填写的数值一致,
其次,得到多少金币呢?(下面详细计算)
在没有溢出之前,我本来就拥有917,现在拥有2147268213,则获取了2147268213-917=2147267296。
我们是获取2147267296,在计算机中应该是-2147267296,
数值-2147267296在计算机中是这样表示:
真值=-2147267296
补码=11111111111111001011001011100000
反码=10000000000000110100110100011111
原码=10000000000000110100110100100000=80034D20=493E0*1BF7
这就是获取金币的过程。
我们在反过来看看为什么能够溢出:前面我讲过
***************************************************************
若 拥有的钱币 ≥ 支付的总金币 成立, // 我拥有917金币,让我支付-2147267296,这是917 大于 -2147267296 成立 ,也就有了下面的溢出前提
则  
    如果 空余背包数量 ≥ 购买物品组数 ,则 消耗钱币 且 获取物品,剩余金币=拥有钱币-支付钱币;//这里不存在背包格子的限制问题,但是经过我的测试,存在金币限制的问题,使得即使满足溢出的前提条件也不能溢出。(等你们亲自去尝试的时候会遇见这个问题)
    如果 空余背包数量 <购买物品组数 ,则 提示背包不足;
***************************************************************


②在封包中的数量位置填写 4000 0000,则产生溢出效果,如下图

(图片说明:点红这2个字只是为了方便看,而不是递进。)
首先,我们可以看到溢出后,可以得到 4000 0000=1073741824个高级经验丹(溢出前已经全部卖光了) ;
其次,发现背包里面的金币没有增加,还是那么多2147268213,也就是溢出没有给金币。这是为什么呢?
  应该支付的总金币 40000000*493E0=124F800000000
由于总支付数值是双字,那么计算机中会舍去红色部分,留下来的为00000000(=0金币),满足溢出的前提条件:917>0
这种溢出不属于1BF6~37EC范围内的!
由于时间仓促,就不再说了!
本人业余者一个,说错的地方还请谅解!下集更加精彩!
*****************
更正:双字节改为双字
1字节=8位二进制
1字=2字节=16位二进制
双字=32位二进制
*****************
温馨提示:为了保护系统安全,使用辅助前,请务必使用影子系统。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

签到天数: 35 天

[LV.5]常住居民I

发表于 2015-2-28 19:54:37 | 显示全部楼层
可不可以发个图片....我看不懂...

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 244 天

[LV.8]以坛为家I

发表于 2015-2-28 20:04:27 | 显示全部楼层
感觉好乱啊  根本看不懂 所以先抢个楼再慢慢看

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 495 天

[LV.9]以坛为家II

发表于 2015-2-28 20:06:24 来自手机 | 显示全部楼层
感谢有你

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 21 天

[LV.4]偶尔看看III

发表于 2015-2-28 20:08:36 | 显示全部楼层
楼主WEP大神

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 4 天

[LV.2]偶尔看看I

发表于 2015-7-12 18:53:16 | 显示全部楼层
呃呃呃 呃呃呃谔谔

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 4 天

[LV.2]偶尔看看I

发表于 2015-7-12 18:53:43 | 显示全部楼层
感觉好乱啊 根本看不懂 不过顶个

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

签到天数: 4 天

[LV.2]偶尔看看I

发表于 2015-7-12 18:54:14 | 显示全部楼层
shadow_ 发表于 2015-2-28 20:04
感觉好乱啊  根本看不懂 所以先抢个楼再慢慢看


感觉好乱啊  根本看不懂 所以先抢个楼再慢慢看

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【好评】【金币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 【点我注册】

本版积分规则

QQ|小黑屋|我爱辅助 ( 辽ICP备19006053号-1 )

GMT+8, 2025-5-2 12:29 , Processed in 0.043027 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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