怎么利用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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。