正文
这里的事件和行为包含线程的启动销毁事件和鼠标键盘事件、游戏角色在游戏内的行文。关于游戏内的行为本篇不做叙述,这种方案主要针对指定游戏专门正对性设计。本篇主要围绕线程事件和鼠标键盘事件进行介绍。
线程事件包含线程的创建和销毁事件,在线程监测篇有提到,检测线程的方法有通过CreateToolhelp32Snapshot、Thread32First、Thread32Next函数枚举线程,也能通过DllMain函数的来获取进程线程的启动和销毁事件; 也可通过ped枚举线程。
通过线程事件判断游戏外挂只能作为一种辅助的判断方式,如果一个傻一点的外挂不断通过CreateRemoteThread函数来远程调用,则能很快被发现其异常行为。
本项目记录的线程事件结构体如下:
typedef struct _GAME_THREAD_EVENT_INFORMATION
{
//0=Create 1=Exit
BYTE evtType;
DWORD dwTid; //线程ID
DWORD dwAddress; //线程地址
DWORD dwCreateTicks;
DWORD dwAliveMs; //存在时间
char szDllPath[MAX_PATH];//所在空间路径
}GAME_THREAD_EVENT_INFORMATION;
记录游戏客户端每次线程事件的,行为、ID、线程入口地址、启动时间,存活时间以入口函数所在模块,将所有的这些线程信息一并发到服务器上,然后通过人工观察采集一些数据之后生成一些判断规则。
关于鼠标键盘事件,本项目并没有加入鼠标键盘事件,是写本文的时候想起来加上的。鼠标键盘事件可以通过判断鼠标轨迹、按键动作行为习惯等方面再结合游戏角色实际动作情况来判断当前是正常玩家在操作还是被外挂调用API在操作,或者使用了按键精灵等模拟工具。
如果你也有这方面兴趣爱好交流欢迎加扣58085250与我直接沟通交流指正。