某南极动物厂新版XX分析——系统线程部分(新瓶旧酒)
2020-06-28 05:22:30 Author: bbs.pediy.com(查看原文) 阅读量:578 收藏

hzqst

雪    币: 8207

活跃值: 活跃值 (182)

能力值:

( LV9,RANK:240 )

在线值:

[原创]某南极动物厂新版XX分析——系统线程部分(新瓶旧酒)

16小时前 517

[原创]某南极动物厂新版XX分析——系统线程部分(新瓶旧酒)

这里分析的是6月18号的版本,由于某些原因这里隐去敏感内容

目前静态分析跟踪到7个系统线程创建,线程创建过程如下:

先判断hv是否存在

如果hv不存在则搜索SeSetAuditParameter中的FF E1特征码

根据如果成功搜索到上述fake thread entry则把线程入口指向上述entry,线程参数指向原真实线程入口(也就是rcx=真实线程入口,并且jmp rcx)

然后调用pscreatesysthrd创建系统线程

目前分析到的7个线程分别是:

CheckKSharedUserDataKdDebuggerEnabledThread

AntiKdDebuggerThread

CheckGameProcessDebuggedThread

CheckKeTimeAcceleratedThread

GameCommonCheckThread

sub_xxxxxxxx(作用不明,可能代码被注释或功能暂未实装)

判断KSHARED_USER_DATA->KdDebuggerEnabled & 1或 & 2 ?

每5秒检测一次,如果判断为true则蓝屏

如果系统版本大于等于win7则执行int2D指令触发SEH(由于静态分析无法分析SEH所以exception之后不知道发生了什么)

否则调用KdDisableDebugger

每5秒执行一次上述功能

ExecuteForGameProcess(AntiProcessDebug);对所有受XX保护的GameProcess执行AntiProcessDebug回调

如果EPROCESS.DebugPort != 0则触发蓝屏

上述检测每10秒执行一次

检测系统时间是否被加速,导致KeDelayExecutionThread的等待时间结果跟HalQueryRealTimeClock时间差不一致

如果时间不一致:

如果某开关开启,则上报服务器,否则蓝屏

上述检测每1秒执行一次

检测cr4.tsd bit是否为1

如果为1:

如果某开关开启,则上报服务器,否则强制结束游戏(对g_game_process数组里的所有进程ZwTerminateProcess)

除此之外还对所有游戏进程检测SHARED_USER_DATA

ExecuteForGameProcess(CheckSharedUserData);

检测如下:

判断R3和R0的KSHARED_USER_DATA的物理地址是否一致

如果物理地址不一致:

如果某开关开启,则上报服务器,否则强制结束游戏

上述检测每10秒执行一次

对PID为16~0x40000的所有进程枚举句柄表

如果句柄ObjectType==*PsProcessType且 拥有该句柄的进程不是受保护的游戏进程 且 进程句柄指向的进程是受保护的游戏进程

则进行句柄降权

遍历PID为16~0x40000的所有进程,遍历其内部的从8~0x2000的所有句柄,如果是SECTION类型且名称包含

L"\\TX_SSO_SHARE_INFO_SIZE"

L"\\TENPROTECT3_SHARE_DATA_"

L"\\TENPROTECT6_SHARE_DATA_"


如果该进程是受保护的游戏进程,则什么都不做

如果该进程不是受保护的游戏进程,且该进程仍然存活(未退出),则上报服务器

如果上述条件都不满足,则强制蓝屏

(猜测:此举可能是为了防止有人强制清空受保护的游戏数组g_game_process)

上述检测每10秒执行一次

[公告]看雪论坛2020激励机制上线了!发帖、回帖不减雪币了!如何获得积分快速升级?


文章来源: https://bbs.pediy.com/thread-260331.htm
如有侵权请联系:admin#unsafe.sh