數值的overflow/underflow - 仙境傳說

Freda avatar
By Freda
at 2010-01-18T19:07

Table of Contents

這個BUG主要是基於二補數系統中,數值發生overflow/underflow時

而程式撰寫者並沒有做妥善的檢查,所引發的數值BUG

下圖是以簡單的數值range : -32768~32767 為解釋

應用面令人爭議,所以我簡單介紹一下就好
--------------------------------------------

首先,我們先拿出一個簡單的模型,如下圖

(+)   (-)
32767 <-> -32768
↖\     ↗/
\↘   /↙
       0


我稍微解釋一下,基本上這個圖是一個循環

當32767+1時,其數值不是32768而是-32768

當-32768-1時,其數值不是-32769而是32767

而0為-32768與32767之中心點



在這邊我們只關心overflow/underflow,也就是32767+1與-32768-1

0這數值,實際上是一點意義都沒有的,儘管是暈眩率0%、失敗率0%...等

-------------------------------------------

講一個比較簡單的例子,假設普攻傷害最高只到32767


如果今天某玩家打到傷害高達65535,那怪物實際受到的傷害將會是下列算式

65535 / ( 32767 + 32768 ) = 1....0

怪物受到的傷害將會是0


如果今天某玩家打到傷害高達90000,那怪物實際受到的傷害將會是下列算式

90000 / ( 32767 + 32768 ) = 1....24465

怪物受到的傷害將會是24465


如果今天某玩家打到傷害高達10000,那怪物實際受到的傷害將會是下列算式

100000 / ( 32767 + 32768 ) = 1....34465

- ( 34465 - 32767 ) = -1698

怪物受到的傷害將會是-1698,所以我們預期會看到0或是MISS


--------------------------------------------

結論就是,如果只要我們找到感興趣的數值range,我們可以經由overflow/underflow

來達到一些實際上不可能達到的效果

如百萬HP、百萬SP、抗狀態100%、製作率100%、經驗值DOUBLE....等

這個BUG原理就簡單的介紹到這邊,應用面的細節就不明說了

--

All Comments

Victoria avatar
By Victoria
at 2010-01-21T18:20
連這個都講...
Carolina Franco avatar
By Carolina Franco
at 2010-01-22T10:34
事實上玩家跟怪物攻擊傷害不在此種限制。
Kama avatar
By Kama
at 2010-01-23T18:35
比較明顯的例子應該是血量超過32767,組隊視窗內看到的
Jake avatar
By Jake
at 2010-01-27T00:23
血量會是負數,血條也變全黑,但實際上血還是滿的XD
Anonymous avatar
By Anonymous
at 2010-01-28T19:16
應用建議保留 別給有心人用~0~
Ina avatar
By Ina
at 2010-02-01T22:45
經驗值DOUBLE.......0__0
Erin avatar
By Erin
at 2010-02-03T07:38
超過數值記錄儲存格的range就有滿洩的狀況 16BIT遊戲很多
Kelly avatar
By Kelly
at 2010-02-03T20:31
這有甚麼不能講?程式設計或有修改遊戲的應該都知道吧XD
Blanche avatar
By Blanche
at 2010-02-05T02:08
是說應用面 不是說原理
Jake avatar
By Jake
at 2010-02-06T07:47
沒人希望在gvg看到四五個hp破80萬的刺客滿街跑吧
Zanna avatar
By Zanna
at 2010-02-09T18:40
樓上是說應用還是打比方 XDDDDDD
Joseph avatar
By Joseph
at 2010-02-10T15:27
百萬hp在內文就有提到了 怎麼弄出來才是問題
Annie avatar
By Annie
at 2010-02-14T07:06
告訴我吧= =+ 我也想變HP八十萬...
Regina avatar
By Regina
at 2010-02-15T03:05
想知道百萬HP+1 XD
Odelette avatar
By Odelette
at 2010-02-18T11:56
感謝大大們傾囊相授= =
Liam avatar
By Liam
at 2010-02-19T05:59
百萬血捨命 百萬魔阿修@@"
Catherine avatar
By Catherine
at 2010-02-19T16:00
其實我覺得應用面都教一教 一起倒一倒算了(誤)

關於獸人腐屍卡片

Belly avatar
By Belly
at 2010-01-18T15:02
板眾好 小弟弟我再逛商店的時候看到and#34;獸人腐屍卡片and#34;產生疑慮,想請教各位大大 功能是:對不死系魔物的攻擊,可減少30% 的傷害度。 裝置 : 相關物 想知道到底有沒有用atat 於是到RO Calculator 計算,但是於飾品類找不到該張卡片 http://rostatus ...

怪物是如何追敵?

Eden avatar
By Eden
at 2010-01-18T14:39
礙於版面整潔問題,我們先定出一個假設,怪物的搜敵範圍只在7*7 ------------------------------------------------------------------- 一般情形下,怪物的搜敵範圍如下圖,在這範圍內怪物會自己找最近的玩家當做目標 ○○○○○○○ ○○○○○ ...

英雄榮光包

Audriana avatar
By Audriana
at 2010-01-18T14:34
請問各地的鄉民 哪裡還會賣《英雄榮光包》 剛剛才發現會送氣球帽 現在遍尋不着~and#34;~ -- - ...

還有客服人員這種東西存在嗎?

Elizabeth avatar
By Elizabeth
at 2010-01-18T14:22
上星期三改版後,伺服器lag不說,就連原本說好的補償方案也沒有一個明確的解答, 官方除了原始說明補償25/50倍的連結外,完全沒有進一步說明,在伺服器合併後, 要如何分辨正服/天狂玩家,要如何辨別玩家在原伺服器的R幣有多少, 又有多少是合併後所入帳的?種種的疑惑似乎只有透過詢問線上客服人員才能解惑了。 在官 ...

關於服事的技能

Ivy avatar
By Ivy
at 2010-01-18T13:43
因為要先賺錢 所以練了一隻服事 對他的傳送技能有點疑問 就是記憶 請問如果已經有四個點了 再打/memo的話 會洗掉哪一個呢? 是排序最上面的那個嗎?? 感激不盡 - ...