游戏里的多开-检测和反检测

一.从生命周期的角度看游戏的多开检测
0x0 事前检测

当你启动第二个游戏的瞬间阻止你这个行为,防患于未然。

特点:不会涉及到封号,这是人为的一个功能。
0x1 事中检测

在游戏运行的过程中进行悄咪咪的检测

特点:没有任何提示,会导致封号
0x2 事后检测

基于数据的检测,你登录了游戏,一定会暴露登录IP等信息。同一个IP下有多台电脑,那一定属于多开行为

二.从技术原理的角度看游戏的多开检测
0x0 进程枚举多开检测方案

直接调用现成的库或者自己去研究实现原理

#include <TlHelp32.h>
CreateToolhelp32Snapshot()
Process32First()
Process32Next()
ExitProcess()

在这里插入图片描述
攻击方案: 复制PE文件,然后进行重命名

0x1 互斥量多开检测方案
CreateMutexA()

攻击方案: 待研究

0x2 信号量多开检测方案

信号量特点:在不同进程间能够共享数据资源

OpenSemaphoreW()
CreateSemaphoreW()
ReleaseSemaphore()

攻击方案: 自己领悟

0x2 窗口多开检测方案

特点:需要在窗口没有出现之前执行,否则把自己给检测到了

FindWindow()
SetWindowTextW()
0x2 共享内存检测方案

特点:实现进程间通信的一种手段(常规状态下,每个程序的内存空间是独立的,不能相互访问)

#pragma data_seg("_hdata") //告诉编译器这个数据放在"_hdata"节的地方
int game_count = 0;
#pragma data_seg() 
#pragma comment(linker, "/SECTION:_hdata,RWS")//READ WRITE Share
三.实战

寻找切入点对开检测算法会放在哪个时间段执行呢?
通过观察猜测是在游戏启动前进行检测

通过逆向分析和排除法,最终定位到了检测算法的地址 0x409322
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鸡岛~

你的支持是我更新的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值