关于Battle Eye (下)
接着一篇,我们继续来看关于BE的检测手段。不过在此之前,我来Show一下《逃离塔科夫》的辅助截图效果吧:


书归正传,接着讲:)
Image name
如果您的进程符合以下任何其他条件,您将立即被标记并报告给服务器,报告ID为0x38
Steam game overlay
BattlEye 始终关注Steam 游戏窗口叠加过程,Steam游戏叠加层窗口的完整进程名称为gameoverlayui.exe,并且众所周知,该图像集可用于渲染,因为劫持和绘制数据到游戏窗口非常简单。 检查的条件是:
特定Steam游戏叠加层窗口的检查几乎与在游戏进程本身上运行的例子相同,因此已从伪代码中省略了它们。
Steam Game Overlay memory scan
Steam 游戏进程叠加将对其内存进行扫描以查找图案和异常情况。 我们无法进一步深入研究这些模式的用途,因为它们非常通用,并且可能与作弊模块有关。
扫描例子还会以已加载图像之外的可执行内存的形式查找任何异常,这表明作弊者已将代码注入了覆盖过程:
Steam Game Overlay process protection
如果Steam游戏叠加进程已使用任何Windows进程保护(如Light(WinTcb))进行了保护,则服务器将收到通知。
如果对上述游戏叠加进程的相应OpenProcess调用返回ERROR_ACCESS_DENIED,您还将获得报告ID为3B的报告。
模块枚举(Module enumeration)
还枚举了Steam游戏叠加过程的模块,特别是寻找vgui2_s.dll和gameoverlayui.dll。 从gameoverlayui.dll开始,已经对这些相应的模块进行了某些检查。
如果此条件匹配:[gameoverlayui.dll + 6C779] == 08BE55DC3CCCCB8 ????? C3CCCCCC,则shellcode将扫描位于字节?????????中的地址的vtable。 如果这些vtable条目中的任何一个不在原始gameoverlayui.dll模块之外,或指向int 3指令,则您的报告ID为3B。
vgui2_s.dll模块还设置了一个特定的检查:
先前的例程在48378上检查是否有修改,这是代码中的部分:
然后,检查修改:
不过我们无法获得与上述两项检查中的第一项都不匹配的vgui2_s.dll副本,因此我们无法讨论其正在检查哪个vtable。
Steam Game Overlay threads
线程也会被枚举:
LSASS
枚举Windows进程lsass.exe(也称为本地安全程序)进程的内存地址空间,并将任何异常情况报告给服务器,就像我们在前两次检查中看到的那样:
LSASS以前已被利用来执行内存操作,因为任何需要Internet连接的进程都需要让LSASS对其进行访问。 BattlEye当前通过手动剥离读/写访问的进程句柄,然后挂接ReadProcessMemory / WriteProcessMemory,将调用重定向到其驱动程序BEDaisy,来缓解此问题。 然后,BEDaisy决定该存储操作是否为合法操作。 如果确定该操作是合法的,它将继续进行操作,否则,他们将故意对计算机进行蓝屏显示。
Misc. report
BattlEye 收集杂项信息,并将其发送回报告ID为3C的服务器。 该信息包括:
- Any window with WS_EX_TOPMOST flag or equivalent alternatives:
- Window text (Unicode)
- Window class name (Unicode)
- Window style
- Window extended style
- Window rectangle
- Owner process image path
- Owner process image size
- Any process with an open process handle (VM_WRITE|VM_READ) to the game
- Image name
- Image path
- Image size
- Handle access
- File size of game specific files:
- ….ContentPaksTslGame-WindowsNoEditor_assets_world.pak
- ….ContentPaksTslGame-WindowsNoEditor_ui.pak
- ….ContentPaksTslGame-WindowsNoEditor_sound.pak
- Contents of game specific files:
- ….BLGameCookedContentScriptBLGame.u
- Detour information of NtGetContextThread
- Any jump instructions (E9) are followed and the final address get’s logged
NoEye
BattlEye通过检查由GetFileAttributesExA找到名称为BE_DLL.dll的任何文件,以检测是否存NoEye的bypass file。
Driver presence
检查驱动设备Beep 和 Null,并报告(如果存在)。 这两个系统通常在任何系统上都不可用,这表明有人手动启用了设备,也称为驱动程序设备劫持。 这样做是为了实现与恶意驱动程序的IOCTL通信,而无需所述驱动程序的独立驱动程序对象。
Sleep delta
BattlEye还将使当前线程排队等待一秒钟的睡眠,并测量与睡眠之前和之后的时钟计数差异:
7zip
BattlEye添加了后启动完整性检查,以防止人们将7zip库加载到游戏进程中并覆盖部分。 这样做是为了减轻以前的病毒码扫描和异常检测,而Battleye决定仅对此特定7zip库添加完整性检查。
Hardware abstraction layer
BattlEye检查Windows硬件抽象层动态链接库(hal.dll)的存在,并向服务器报告是否在游戏过程中加载了该链接。
Image checks
BattlEye还检查加载到游戏过程中的各种image。 这些模块大多数都是经过正常签名的。
nvToolsExt64_1
NV显卡额外的辅助插件检测:
ws2detour_x96
networkdllx64
nxdetours_64
wmp
Module id enumeration
模块的枚举ID:
TCP table scan
BattlEye shellcode还将搜索系统范围内的TCP连接列表(称为TCP表).
Report types
Categories: Garfield's Diary