快速了解VAC - 第一部分:模块加载
【翻译】快速了解VAC - 第一部分:模块加载原文链接:https://whereisr0da.github.io/blog/posts/2021-03-10-quick-vac/
我们已经讨论过VAC以及它是多么的鸡肋。所以最近我决定仔细研究一下它,以下就是我分析的结果。我的目标是了解VAC如何执行其模块,并在第二部分深入解析这些模块。
注意:首先我本身不是一个专业的游戏黑客,所以如果有不准确的地方请随意指出。
VAC是什么?VAC(Valve Anti Cheat)是一个用户层的反作弊系统,用于扫描和检测外部作弊程序(其他进程)或者内部作弊程序(游戏进程)。
长话短说,用户层意味着它无法获得高级的功能和真正的系统级监控(内核层的管理程序)。这是关于VAC的主要问题,也是VAC保护的游戏可以被轻易绕过的主要原因之一。由于它是用户态保护,它的本质是一个运行在用户空间的可执行文件(或服务)。这就意味着我们可以很容易地注入/执行代码,然后是加载内核区域的一些东西(签名的驱动程序,安全启动等等)。我所说的高级功能,是指它只能像其他用户态进程一样监控进程,这并不是一个很全面的监控。因 ...
Minecraft部分代码研究
mc的部分代码研究minecraft serverspigot服务器代码中,net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo用来序列化玩家配置文件GameProfile给客户端的。某次由于服务器返回的格式不符合要求,导致在使用了某种道具后导致了某个服务器崩溃。
com.mojiang.authlib服务器和客户端共用代码,用来实现yggdrasil用户登录验证和用户Profile的获取。
其中com/mojang/authlib/yggdrasil/YggdrasilMinecraftSessionService.java定义了所有使用到的url和资源域名白名单列表,直接更改此代码再重新打包成jar可改变客户端和服务器端的行为。
spigot服务器入口spigot-1.7.x-1.8.1.jar!\org\bukkit\craftbukkit\Main
->
net.minecraft.server.v1_7_R4.MinecraftServer.main(options1);
...
关于某ewt刷课软件的逆向解包反编译
起因
该软件分为多个版本,在Github声称完全开源,实际上并非如此,开源的版本已经停止维护,而正在维护的版本却未开源,有人发Issue问其源码,而开发者却不予理会
维护中的软件编写实在是过于”奇特”,ui为PyQt5编写,界面几乎全英文/历史某个版本非常好用且简洁,后来作者使用PyQt5重构时,体积膨胀到近50mb)
旧版本简洁软件甚至有作者写的版本检测导致无法继续使用
关于软件Python3.10 + PyQt5 + Pyinstaller打包
解包&解密既然已经知道他是用Pyinstaller打包成exe,那么可以使用对应工具对其解包这里我采用pyinstxtractor对其解包打开cmd 输入命令 python pyinstxtractor.py xxxx.exe 运行过程中发现部分文件解包报错 是加密了,这时我们来到解包后的目录中在其中找到文件pyimod00_crypto_key 并且加上后缀.pyc这个是存储加解密的Key所在文件,对其进行反编译这里我使用的是 在线Python pyc文件编译与反编译 进行在线反编译key已经出来了 接下来我们需要 ...
uncompyle6在python3.10及以上版本的使用
前言
uncompyle6 目前只支持Python 2.6-3.8 ,但是我们需要在高版本python使用他 所以可采用本教程
教程环境:
Windows 11 专业版Python 3.11.4
首先我们直接使用uncompyle6时会报错
Traceback (most recent call last):File “”, line 198, in run_module_as_main File “”, line 88, in run_code File “C:\Users\Skaur\AppData\Local\Programs\Python\Python311-32\Scripts\uncompyle6.exe__main.py”, line 4, inFile “C:\Users\Skaur\AppData\Local\Programs\Python\Python311-32\Lib\site-packages\uncompyle6__init__.py”, line 53, inimport uncompyle6.semantics.pysourceFile “C:\ ...
关于网易我的世界使用Cookie登录
原理
Hook劫持某个登录的Method参数将其处理替换为需要登录的cookie即可实现
逆向部分
研究的盒子版本: 1.10.3
Dump并且解密字符串后 找到类“WPFLauncher.Network.Launcher.aaw”并且找到其中的”f”子程序
1234public static void f(string sauth, Action<EntityResponse<aar.Resposne>, Exception> hbx){ //……}
第一个string类型的参数就是我们所谓的cookie_那么我们要使用cookie_登录的话将其参数替换为我们的cookie即可
代码部分
.net Hook框架:DotNetDetour
按照框架的方法,直接按部就班对其方法进行Hook劫持…省略40kb代码,建议自写