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