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