转载mark-反调试技术

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

 

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

 

先判断hv是否存在

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

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

然后调用pscreatesysthrd创建系统线程

 

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

 

CheckKSharedUserDataKdDebuggerEnabledThread

AntiKdDebuggerThread

CheckGameProcessDebuggedThread

CheckKeTimeAcceleratedThread

GameCommonCheckThread

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

 

CheckKSharedUserDataKdDebuggerEnabledThread:

 

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

 

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

 

AntiKdDebuggerThread:

 

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

否则调用KdDisableDebugger

每5秒执行一次上述功能

 

CheckGameProcessDebuggedThread:

 

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

 

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

 

上述检测每10秒执行一次

 

CheckKeTimeAcceleratedThread:

 

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

 

 

如果时间不一致:

 

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

 

上述检测每1秒执行一次

 

GameCommonCheckThread:

 

检测cr4.tsd bit是否为1

 

如果为1:

 

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

 

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

 

ExecuteForGameProcess(CheckSharedUserData);

 

检测如下:

 

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

 

如果物理地址不一致:

 

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

 

上述检测每10秒执行一次

 

AllProcessCommonCheckThread:

对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秒执行一次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值