当前位置:
首页 > temp > 简明python教程 >
-
利用Python做绝地科学家,再也不怕飞天遁地的神仙了
前言
玩吃鸡时间长的鸡友们 应该都知道现在的游戏环境非常差 特别在高端局 神仙满天飞 搞得很多普通玩家非常没有游戏体验
因为吃鸡的火爆 衍生出了一条巨大的外挂利益链 导致市面上出现了各式各样的外挂
正是因为现在的神仙满天飞 像我这种菜逼实在没办法生存下去 我的报复欲促使我开始了科学研究
先给大家介绍一下现在市面上的外挂种类
- 传统外挂fps游戏都有一个共同的特点,大部分计算都是本地完成的,不可能每一个动作都和服务器交互
- 有几个原因:会造成服务器负荷过大,提高运营成本在对枪杀人时,几十ms的延迟可能会扭转战局会极大影响游戏体验信息安全的一个基本原则,永远不要相信用户的输入。
- 这里的输入就是指在本地进行运算的结果。本地进行的计算越少,与服务器交互的越多,外挂利用难度更大。
- ">信息安全的一个基本原则,永远不要相信用户的输入。这里的输入就是指在本地进行运算的结果。本地进行的计算越少,与服务器交互的越多,外挂利用难度更大。
- 由于大量的计算都是在本地完成的,而游戏又是运行在内存中,那么导致了我们有很多种方法进行利用。最简单的就是用CE修改内存里的数据,常规的有注入和Hook,还有各种奇淫技巧。
- 单以注入为例,就有五花八门的注入技术。下面是《游戏外挂攻防艺术》一书中的提到的一些方法:注册表注入远线程注入依赖可信进程注入APC注入消息钩子注入导入表注入劫持进程创建注入LSP劫持注入输入法注入ComRes注入
- 修改本地文件的PUBG外挂本篇文章就是基于这种方法实现的,原理是通过修改本地游戏资源(*.pak),来实现的各种功能,而PUBG采用BattlEye来实现反外挂,游戏运行时后台有个叫BEservice.exe的进程,进游戏后打开任务管理器就能看到两个很明显的PUBG logo的进程,另外一个叫TslGame.exe是游戏的进程。
- BEservice.exe对PAK修改的检测十分严格,而且不断在更新,这也是各种辅助有时在游戏更新后会失效的一个主要原因。而基本上一个外挂失效,也只用更新下过检测(BEservice.exe),就能满血复活了。
科学研究
上面说了基本上通过修改pak文件的外挂失效只需要更新一下过检测就行了
自从前几天的游戏大更后 市面上很多过检测的方法都已经失效了 查了很多资料实验了很多次后 找到了个目前来说还算是稳定的方法:
- 复制一份PUBG目录 以下称bypass目录
- 将PUBG目录重命名为PUBG1
- 使用mklink命令创建bypass目录的软链接命名为PUBG
- 使用mklink命令创建功能pak文件的软链接 将其放入PUBG这个软链接中的paks目录
- 登steam 随便开一局游戏 上飞机后 删除第四步在paks目录里创建的软链接
- 删除第三步创建的PUBG软链接
- 将PUBG1目录重命名回PUBG
这样就大功告成了 前4步是初始化 后3步才算是过检测 复制完的bypass目录在不进行大更新的情况下可以不删除 也就是说如果你退出了游戏 就需要从第2步重新开始
发明科技
要完成这个科技其实非常简单 只需要一些简单的文件操作基础即可 这里就不多bb了 直接上成品
#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
@ Author : NNNNNaiquan
"""
import config
import os
import shutil
class 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'
科学实验
用了个主播无后的pak来测试
最后
这里我就不提供带功能的pak给大家了 虽然有心的话是能找到的 另外本人不敢保证不会封号 也不提倡大家使用外挂 就这样
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数