您好,登錄后才能下訂單哦!
怎么利用Python制作游戲外掛,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
fps游戲都有一個共同的特點,大部分計算都是本地完成的,不可能每一個動作都和服務器交互,有幾個原因:
會造成服務器負荷過大,提高運營成本
在對槍殺人時,幾十ms的延遲可能會扭轉戰局
會極大影響游戲體驗
信息安全的一個基本原則,永遠不要相信用戶的輸入。這里的輸入就是指在本地進行運算的結果。本地進行的計算越少,與服務器交互的越多,外掛利用難度更大。">信息安全的一個基本原則,永遠不要相信用戶的輸入。這里的輸入就是指在本地進行運算的結果。本地進行的計算越少,與服務器交互的越多,外掛利用難度更大。由于大量的計算都是在本地完成的,而游戲又是運行在內存中,那么導致了我們有很多種方法進行利用。最簡單的就是用CE修改內存里的數據,常規的有注入和Hook,還有各種奇淫技巧。單以注入為例,就有五花八門的注入技術。下面是《游戲外掛攻防藝術》一書中的提到的一些方法:
注冊表注入
遠線程注入
依賴可信進程注入
APC注入
消息鉤子注入
導入表注入
劫持進程創建注入
LSP劫持注入
輸入法注入
ComRes注入
本篇文章就是基于這種方法實現的,原理是通過修改本地游戲資源(*.pak),來實現的各種功能,而PUBG采用BattlEye來實現反外掛,游戲運行時后臺有個叫BEservice.exe的進程,進游戲后打開任務管理器就能看到兩個很明顯的PUBG logo的進程,另外一個叫TslGame.exe是游戲的進程。BEservice.exe對PAK修改的檢測十分嚴格,而且不斷在更新,這也是各種輔助有時在游戲更新后會失效的一個主要原因。而基本上一個外掛失效,也只用更新下過檢測(BEservice.exe),就能滿血復活了。
復制一份PUBG目錄 以下稱bypass目錄將PUBG目錄重命名為PUBG1使用mklink命令創建bypass目錄的軟鏈接命名為PUBG使用mklink命令創建功能pak文件的軟鏈接 將其放入PUBG這個軟鏈接中的paks目錄登steam 隨便開一局游戲 上飛機后 刪除第四步在paks目錄里創建的軟鏈接刪除第三步創建的PUBG軟鏈接將PUBG1目錄重命名回PUBG
#! /usr/bin/env python# -*- coding: utf-8 -*-"""
@ Author : NNNNNaiquan
@ Mail : misitenq@gmail.com
"""import configimport osimport shutilclass bypass(): def __init__(self, steamapps_path): self.steamapps_path = steamapps_path
self.pubg_path = steamapps_path + 'PUBG' self.bypass_path = steamapps_path + 'bypass' if not os.path.exists(self.bypass_path):
l('Info',unicode('正在初始化','utf-8').encode('gbk'))
shutil.copytree(self.pubg_path,self.bypass_path) #step 1 shutil.move(self.pubg_path,self.steamapps_path + 'PUBG1') #step 2 l('Info',unicode('初始化完成','utf-8').encode('gbk'))
def make_link(self, ): pubg_pak_path = self.pubg_path + '\\TslGame\\Content\\Paks\\TslGame-WindowsNoEditor_ui1.pak' l('Info',unicode('正在創建軟鏈接','utf-8').encode('gbk'))
os.popen('mklink /j "' + self.pubg_path + '" "' + self.bypass_path + '"') #step 3 os.popen('mklink "' + pubg_pak_path + '" "' + config.FUNC_PAK_PATH + '"') #step 4 l('Info',unicode('軟鏈接創建成功','utf-8').encode('gbk'))
def clean(self, ): bypass_pak_path = self.bypass_path + '\\TslGame\\Content\\Paks\\TslGame-WindowsNoEditor_ui1.pak' l('Info',unicode('正在過檢測','utf-8').encode('gbk'))
os.remove(bypass_pak_path) #step 5 os.popen('rd /s /q "' + self.pubg_path + '"') #step 6 shutil.move(self.steamapps_path + 'PUBG1',self.pubg_path) #step 7 l('Info',unicode('成功過檢測 開始奔放吧','utf-8').encode('gbk'))def l(s,message): print '[%s] %s'%(s,message)def main(): steamapps_path = config.STEAM_PATH + 'steamapps\\common\\' if os.path.exists(steamapps_path + 'PUBG'):
obj = bypass(steamapps_path)
obj.make_link()
l('Info',unicode('上飛機后切回來按任意鍵開始過檢測','utf-8').encode('gbk'))
os.system('pause')
obj.clean()
else:
l('Warning',unicode('請檢查配置文件中的游戲目錄是否正確','utf-8').encode('gbk'))if __name__ == '__main__':
main()
config.py
文件 里面需要放steam與功能pak的路徑 格式:STEAM_PATH = '...\\Steam\\'
,FUNC_PAK_PATH = '...\\*.pak'
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。