QEMU/KVM + moonlight实现串流游戏作弊

VSole2023-08-10 09:24:20

GitHub:https://github.com/cs1ime/blacksun-framework

有些代码是好久之前写的C代码缝合起来的,内存搜索,GameParser这种,因为实在不想重写一遍,看不懂就gdb调起来逆向呗。

还有些代码是初学c++的时候写的,绘制这块,render模块其实可以用weak_ptr拿共享内存的,有空安排一个C SDK出来。

本文中涉及到的源码和技术仅限交流学习,不得用于非法用途。

已经做到

◆绘制和读写都在虚拟机外部实现,绕过一切反作弊外挂检测(云游戏厂商都用的KVM虚拟机)。

◆修改moonlight源码实现imgui绘制,兼容vaapi(opengl),vdpau(sdlrender)。

◆利用NAT网络通信以做到超低延迟的moonlight串流画面。

◆通过对moonlight发送SDL_Event实现键鼠模拟。

◆模拟100hz回报率的鼠标进行自瞄以做到丝滑的自瞄效果。

◆屏蔽鼠标侧键(触发自瞄的按键)输入虚拟机以做到更隐蔽的自瞄。

接下来可能会实现的功能:

1.UE引擎外部光线追踪: kvm外部读写速度非常快,而且作弊有一个Linux作为运行环境,拿到周围所有的可碰撞物体的空间信息,跑一个光追算法就可以了。

2.Ept断点: 利用vt的MTF,一核一个eptp,eptp的读写执行属性每个都能单独存在的特性,处理好cow(也可以不处理)就能轻松的做到断点,这东西特别无脑,CPU自带的硬断还要处理单步+线程调度的问题,这东西完全不用处理这些。

3.Invoke: 可以利用Ept断点做hook,用轮询+读写锁的方式与用户层做通讯,用户层用一个coroutine做hook的callback,callback里用yield来做invoke,观察栈内存断点来判断返回并判断超时,返回之后resume coroutine.实现Invoke之后基本和注入没啥区别了。

KVM的正常用户和反作弊可能采取的动作:

1.云游戏服务提供商: 反作弊可能和他们合作,把他们的KVM环境标记为合法的,不过这个影响不大的,没人会顶着这么大延迟玩fps射击类游戏。

2.家庭串流游戏用户: 这类用户可能会使用KVM,但是国内无wifi6e,体验会跟不上,会比较少。

3.用linux玩Windows游戏的用户: 这也是一个很好的用linux玩Windows游戏的方法,looking glass也用的串流传画面。

反作弊可能会采取的对抗方案:

1.控制机上装反作弊: 这样子是无意义的,因为控制机可能是基于GPL的系统,GPL上玩不了Windows那套的。

2.不支持KVM: 这能彻底解决这个问题,但是实机Windows做串流游戏机不太好,有的时候容易BSOD,用远程控制插座和局域网开机来解决这个问题,但是这样子做对硬件很不好,最好的家庭串流游戏方案还是KVM管理客户机。

3.标记KVM用户: KVM用户玩的太强了就BAN了。

4.开发一个Host OS放到市场上: 如果想在Host OS上运行检测的话需要绕过GPL,要独立开发一个VMM。如果想彻底解决作弊问题得BIOS主板都用自己的一套。目前最有可能做到的公司就是Microsoft,自家有xbox产品线,hyper-v,gpu半虚拟化技术。

linux系统kvm
本作品采用《CC 协议》,转载必须注明作者和本文链接
以下结果以CentOS 7 为例,按照等保2.0标准,2021报告模板,三级系统要求进行测评。 一、身份鉴别 a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。 输入 more /etc/shadow,得知系统所有用户,此语句字段格式有九段。 第一字段:用户名(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd 是相同的,
等保2.0 Linux主机测评
2021-09-30 06:20:40
以下结果以CentOS 7 为例,按照等保2.0标准,2021报告模板,三级系统要求进行测评。应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。
本次案例以CentOS 7 为例,按照等保2.0标准,2021报告模板,三级系统要求进行测评。
然而,一个名为铂金“至少自2009年以来,该公司一直在积极针对政府组织、国防机构和电信提供商,并找到了一种方法,可以在基于主机的保护机制中隐藏其恶意活动。微软最近发现,该网络间谍组织现在正在利用Intel的主动管理技术(AMT)LAN串行(SOL)通道作为文件传输工具,在未被发现的情况下从目标计算机窃取数据。
然而在内核态中,堆内存的分配策略发生了变化。并把这个slab划分为一个个object,并将这些object组成一个单向链表进行管理,这里需要注意slub系统把内存块当成object看待,而不是伙伴系统中的页。本次选择演示的例题是2019-SUCTF的sudrv例题,查看start.sh中的信息可以发现开启了kaslr保护与smep保护。
初识Shell
2022-03-11 22:42:44
程序是由序列组成的,告诉计算机如何完成一个具体的任务。编写程序花费的时间往往是实际运行时间的几十倍或几百倍。除了计算机生产厂家的专业人员外,绝大多数的 程序员已经不再去学习机器语言了。包含的功能几乎可以涵盖Shell所具有的功能,所以一般的Shell脚本都会指定它为执行路径。目前使用的 并不多,已经被/bin/tcsh所取代。
◆绘制和读写都在虚拟机外部实现,绕过一切反作弊外挂检测(云游戏厂商都用的KVM虚拟机)。
一个基于 Linux 操作系统的服务器运行的同时,也会表征出各种各样参数信息。通常来说运维人员、系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要,尤其当你的程序非正常工作的时候,这些蛛丝马迹往往会帮助快速定位跟踪问题。
好的系统管理员区分在效率上。如果一位高效的系统管理员能在 10 分钟内完成一件他人需要 2 个小时才能完成的任务,那么他应该受到奖励(得到更多报酬),因为他为公司节约了时间,而时间就是金钱。以下这些技巧可以节约时间 —— 即使没有因为高效而得到更多的报酬,但至少可以有更多的自由支配时间。
VSole
网络安全专家