网游变态功能
今天我們講的話題 ?不分端游/手游還是頁游,是一個相通的概念
如果你完全不懂逆向和游戲安全 也沒關(guān)系
從一個玩家的角度 ?你可能也聽說過或則游戲中見過各種各樣的變態(tài)功能(影響游戲平衡系統(tǒng)的功能)
例如
秒殺 ?無敵 ?瞬移 ?刷槍 ?踢別人掉線 飛天遁地等等
這些功能聽起來就很炫酷很爆炸
但是實現(xiàn)起來其實并沒有多么復(fù)雜,甚至?xí)饶嫦蛴螒蛑姓9δ芎唵?
那么我們先來了解一下變態(tài)功能是怎樣產(chǎn)生的呢?
變態(tài)功能往往都是游戲設(shè)計時留下的隱患,網(wǎng)絡(luò)交互和服務(wù)端校驗疏忽導(dǎo)致的
什么是游戲網(wǎng)絡(luò)交互呢?
舉個最簡單的例子,游戲中玩家A喊話,玩家B是怎么收到的呢?
是玩家A像服務(wù)器發(fā)送喊話封包,服務(wù)器收到請求,向玩家A周圍一定范圍內(nèi)的其他玩家發(fā)送封包,其他玩家收到服務(wù)器的封包,就知道玩家A的喊話內(nèi)容了
這就是一種網(wǎng)絡(luò)交互
有人會問 這種交互看上去很合理啊 怎么會導(dǎo)致變態(tài)功能呢?
再舉個更簡單的例子
玩家A向服務(wù)器發(fā)送完成任務(wù)封包,服務(wù)器收到封包做相應(yīng)處理及回應(yīng)
實際上這個例子里就存在著可能疏忽的地方,如果服務(wù)器沒有再次驗證任務(wù)完成情況而是選擇高度信任玩家A發(fā)送的封包,就有可能被利用實現(xiàn)變態(tài)功能,導(dǎo)致秒完成任務(wù)
這就是一種服務(wù)端校驗疏忽導(dǎo)致的 ? 這種變態(tài)功能往往是可以被避免以及修改的 方法是把邏輯算法以及校驗全部放在服務(wù)器 選擇不信任客戶端的任何封包
我們現(xiàn)實生活中其實也一樣
例如我們?nèi)ス衽_買票,一張票50元,我們把50元給售票員,然后告訴他"給你50元",
正常情況下售票員選擇是驗證是否是50元,而不是單方面信任客戶,如果單方面信任就容易造成損失,和游戲中達(dá)到變態(tài)功能是一個效果
我們再舉一個例子
游戲中,我們攻擊怪物,本地客戶端邏輯算法計算出怪物扣血量,向服務(wù)器發(fā)送怪物扣血封包,這種設(shè)計就是不安全的
安全的設(shè)計應(yīng)該是這樣
游戲中,我們釋放技能,向服務(wù)器發(fā)送技能封包,服務(wù)器邏輯算法算出該技能是否對怪物造成傷害以及傷害多少,然后反饋給客戶端
實際上我們單純通過發(fā)包的位置看攻擊怪物的時候技能封包和是否有扣血封包就應(yīng)該知道該游戲是否有秒怪功能了
當(dāng)然也有另外一種秒怪功能是這樣的 ?服務(wù)器沒有對技能CD進(jìn)行驗證我們1秒之內(nèi)發(fā)送很多個技能包 服務(wù)器都承認(rèn)了效果那么依然可以達(dá)到秒怪功能
以上的變態(tài)功能看上去只要謹(jǐn)慎和不斷的測試就能夠高概率的避免
那有時候服務(wù)器校驗呈現(xiàn)一種明知故犯的感覺,比如某些射擊類游戲快速射擊,大型3D游戲短距離瞬移,有人會問,他明知道有漏洞為什么不修改掉 ?
其實這是無奈之舉 ?原因在于如果所有的封包都驗證,算法都放在服務(wù)器,處理結(jié)果等待服務(wù)器,必然會產(chǎn)生較高的延時
那么在這種激烈的實時戰(zhàn)斗和強(qiáng)烈打擊感的游戲中,和設(shè)計初衷是完全相悖的。所以是否有某些變態(tài)功能也是取決于游戲類型的。
還有就是大家會發(fā)現(xiàn),歐美韓的網(wǎng)絡(luò)游戲變態(tài)功能更多,根本原因不是沒有反外掛思路,而是在于更在乎游戲體驗和打擊感不得已的選擇,
國服自主開發(fā)的游戲變態(tài)功能很少,原因在于中國是工作室大國...反外掛已經(jīng)成為游戲設(shè)計的重中之重
這樣我們就了解了變態(tài)功能的本質(zhì)其實就是網(wǎng)絡(luò)交互導(dǎo)致的,無論是不得已還是疏忽
那么對于有一定逆向基礎(chǔ)的人來說,會說我知道的變態(tài)功能實現(xiàn)方法很多啊,不止是封包協(xié)議實現(xiàn)
例如:
替換游戲文件,修改游戲文件
修改代碼 ?修改數(shù)據(jù)
篡改協(xié)議,協(xié)議重發(fā),構(gòu)造畸形協(xié)議造成處理崩潰等等
那么我在這里想說的是 ? 這些方法殊途同歸,最終都是通過封包實現(xiàn)的效果
我們來一一舉例說明
觀看完整版以及視頻請關(guān)注 ?微信公眾號:任鳥飛逆向 ?每周更新技術(shù)貼 端游/手游/頁游/逆向/游戲安全/編程,有你想要的
任鳥飛微信:hdlw312
靜態(tài)替換游戲文件,包括多年前TP驅(qū)動保護(hù)文件也是可以替換的,原因在于,游戲沒有去嚴(yán)格驗證,我只打開這個文件,沒有驗證他是否是真正的文件
替換文件實際上就是替換了游戲的邏輯,那么最終產(chǎn)生的封包也發(fā)生了變化
這種方法,簡單方便,不需要去分析封包協(xié)議,但是最終也是因為改變了封包而導(dǎo)致的效果,例如某個副本文件被替換成簡單副本文件,整體的邏輯發(fā)生變化,但是往往這種能夠?qū)崿F(xiàn)的前提還是網(wǎng)絡(luò)校驗不嚴(yán)格,或則其實一個最后的副本通關(guān)封包就可以實現(xiàn)
至于靜態(tài)修改游戲文件 ?和動態(tài)修改游戲代碼(數(shù)據(jù)) ?實際上沒有什么本質(zhì)區(qū)別?
都是修改游戲邏輯而已
在這里面我們舉兩個例子 大家就會明白 修改邏輯的意義和怎么影響的封包
例如某游戲無敵,我們可以去修改代碼破壞人物的死亡邏輯,讓他無論什么情況下都不執(zhí)行死亡CALL,這樣就達(dá)到了無敵不死的效果,實際情況就是屏蔽掉了人物死亡封包,最終還是影響封包而已
例如某游戲技能無CD,我們可以去破壞掉技能的CD判斷,實際上最終影響封包的效果就是,多次發(fā)送封包而已
這兩種變態(tài)功能 其實就是讓他發(fā)包或則不讓他發(fā)包而已
至于協(xié)議篡改,協(xié)議重發(fā),那就是更直接的分析封包協(xié)議了,我們有機(jī)會可以詳細(xì)講解。
還有就是構(gòu)造畸形協(xié)議也是一種變態(tài)功能的實現(xiàn)方法,例如封包中某個參數(shù),我們用極限值替換,例如0,-1,FF等等,可能會造成服務(wù)器處理崩潰,而產(chǎn)生意想不到的后果,比如對戰(zhàn)玩家被踢下線等等。
今天就講到這里 ?謝謝大家支持
微信公眾號:任鳥飛逆向
微信:hdlw312
論壇:www.feiyuol.com
QQ群:484566026 入群可加任鳥飛好友
QQ群:239774259 入群可加任鳥飛好友
QQ:313866957
如果你完全不懂逆向和游戲安全 也沒關(guān)系
從一個玩家的角度 ?你可能也聽說過或則游戲中見過各種各樣的變態(tài)功能(影響游戲平衡系統(tǒng)的功能)
例如
秒殺 ?無敵 ?瞬移 ?刷槍 ?踢別人掉線 飛天遁地等等
這些功能聽起來就很炫酷很爆炸
但是實現(xiàn)起來其實并沒有多么復(fù)雜,甚至?xí)饶嫦蛴螒蛑姓9δ芎唵?
那么我們先來了解一下變態(tài)功能是怎樣產(chǎn)生的呢?
變態(tài)功能往往都是游戲設(shè)計時留下的隱患,網(wǎng)絡(luò)交互和服務(wù)端校驗疏忽導(dǎo)致的
什么是游戲網(wǎng)絡(luò)交互呢?
舉個最簡單的例子,游戲中玩家A喊話,玩家B是怎么收到的呢?
是玩家A像服務(wù)器發(fā)送喊話封包,服務(wù)器收到請求,向玩家A周圍一定范圍內(nèi)的其他玩家發(fā)送封包,其他玩家收到服務(wù)器的封包,就知道玩家A的喊話內(nèi)容了
這就是一種網(wǎng)絡(luò)交互
有人會問 這種交互看上去很合理啊 怎么會導(dǎo)致變態(tài)功能呢?
再舉個更簡單的例子
玩家A向服務(wù)器發(fā)送完成任務(wù)封包,服務(wù)器收到封包做相應(yīng)處理及回應(yīng)
實際上這個例子里就存在著可能疏忽的地方,如果服務(wù)器沒有再次驗證任務(wù)完成情況而是選擇高度信任玩家A發(fā)送的封包,就有可能被利用實現(xiàn)變態(tài)功能,導(dǎo)致秒完成任務(wù)
這就是一種服務(wù)端校驗疏忽導(dǎo)致的 ? 這種變態(tài)功能往往是可以被避免以及修改的 方法是把邏輯算法以及校驗全部放在服務(wù)器 選擇不信任客戶端的任何封包
我們現(xiàn)實生活中其實也一樣
例如我們?nèi)ス衽_買票,一張票50元,我們把50元給售票員,然后告訴他"給你50元",
正常情況下售票員選擇是驗證是否是50元,而不是單方面信任客戶,如果單方面信任就容易造成損失,和游戲中達(dá)到變態(tài)功能是一個效果
我們再舉一個例子
游戲中,我們攻擊怪物,本地客戶端邏輯算法計算出怪物扣血量,向服務(wù)器發(fā)送怪物扣血封包,這種設(shè)計就是不安全的
安全的設(shè)計應(yīng)該是這樣
游戲中,我們釋放技能,向服務(wù)器發(fā)送技能封包,服務(wù)器邏輯算法算出該技能是否對怪物造成傷害以及傷害多少,然后反饋給客戶端
實際上我們單純通過發(fā)包的位置看攻擊怪物的時候技能封包和是否有扣血封包就應(yīng)該知道該游戲是否有秒怪功能了
當(dāng)然也有另外一種秒怪功能是這樣的 ?服務(wù)器沒有對技能CD進(jìn)行驗證我們1秒之內(nèi)發(fā)送很多個技能包 服務(wù)器都承認(rèn)了效果那么依然可以達(dá)到秒怪功能
以上的變態(tài)功能看上去只要謹(jǐn)慎和不斷的測試就能夠高概率的避免
那有時候服務(wù)器校驗呈現(xiàn)一種明知故犯的感覺,比如某些射擊類游戲快速射擊,大型3D游戲短距離瞬移,有人會問,他明知道有漏洞為什么不修改掉 ?
其實這是無奈之舉 ?原因在于如果所有的封包都驗證,算法都放在服務(wù)器,處理結(jié)果等待服務(wù)器,必然會產(chǎn)生較高的延時
那么在這種激烈的實時戰(zhàn)斗和強(qiáng)烈打擊感的游戲中,和設(shè)計初衷是完全相悖的。所以是否有某些變態(tài)功能也是取決于游戲類型的。
還有就是大家會發(fā)現(xiàn),歐美韓的網(wǎng)絡(luò)游戲變態(tài)功能更多,根本原因不是沒有反外掛思路,而是在于更在乎游戲體驗和打擊感不得已的選擇,
國服自主開發(fā)的游戲變態(tài)功能很少,原因在于中國是工作室大國...反外掛已經(jīng)成為游戲設(shè)計的重中之重
這樣我們就了解了變態(tài)功能的本質(zhì)其實就是網(wǎng)絡(luò)交互導(dǎo)致的,無論是不得已還是疏忽
那么對于有一定逆向基礎(chǔ)的人來說,會說我知道的變態(tài)功能實現(xiàn)方法很多啊,不止是封包協(xié)議實現(xiàn)
例如:
替換游戲文件,修改游戲文件
修改代碼 ?修改數(shù)據(jù)
篡改協(xié)議,協(xié)議重發(fā),構(gòu)造畸形協(xié)議造成處理崩潰等等
那么我在這里想說的是 ? 這些方法殊途同歸,最終都是通過封包實現(xiàn)的效果
我們來一一舉例說明
觀看完整版以及視頻請關(guān)注 ?微信公眾號:任鳥飛逆向 ?每周更新技術(shù)貼 端游/手游/頁游/逆向/游戲安全/編程,有你想要的
任鳥飛微信:hdlw312
靜態(tài)替換游戲文件,包括多年前TP驅(qū)動保護(hù)文件也是可以替換的,原因在于,游戲沒有去嚴(yán)格驗證,我只打開這個文件,沒有驗證他是否是真正的文件
替換文件實際上就是替換了游戲的邏輯,那么最終產(chǎn)生的封包也發(fā)生了變化
這種方法,簡單方便,不需要去分析封包協(xié)議,但是最終也是因為改變了封包而導(dǎo)致的效果,例如某個副本文件被替換成簡單副本文件,整體的邏輯發(fā)生變化,但是往往這種能夠?qū)崿F(xiàn)的前提還是網(wǎng)絡(luò)校驗不嚴(yán)格,或則其實一個最后的副本通關(guān)封包就可以實現(xiàn)
至于靜態(tài)修改游戲文件 ?和動態(tài)修改游戲代碼(數(shù)據(jù)) ?實際上沒有什么本質(zhì)區(qū)別?
都是修改游戲邏輯而已
在這里面我們舉兩個例子 大家就會明白 修改邏輯的意義和怎么影響的封包
例如某游戲無敵,我們可以去修改代碼破壞人物的死亡邏輯,讓他無論什么情況下都不執(zhí)行死亡CALL,這樣就達(dá)到了無敵不死的效果,實際情況就是屏蔽掉了人物死亡封包,最終還是影響封包而已
例如某游戲技能無CD,我們可以去破壞掉技能的CD判斷,實際上最終影響封包的效果就是,多次發(fā)送封包而已
這兩種變態(tài)功能 其實就是讓他發(fā)包或則不讓他發(fā)包而已
至于協(xié)議篡改,協(xié)議重發(fā),那就是更直接的分析封包協(xié)議了,我們有機(jī)會可以詳細(xì)講解。
還有就是構(gòu)造畸形協(xié)議也是一種變態(tài)功能的實現(xiàn)方法,例如封包中某個參數(shù),我們用極限值替換,例如0,-1,FF等等,可能會造成服務(wù)器處理崩潰,而產(chǎn)生意想不到的后果,比如對戰(zhàn)玩家被踢下線等等。
今天就講到這里 ?謝謝大家支持
微信公眾號:任鳥飛逆向
微信:hdlw312
論壇:www.feiyuol.com
QQ群:484566026 入群可加任鳥飛好友
QQ群:239774259 入群可加任鳥飛好友
QQ:313866957
總結(jié)
- 上一篇: 缓冲区溢出漏洞攻击——Shellcode
- 下一篇: svchost.exe启动服务原理