首页
社区
课程
招聘
[原创]某南极动物厂新版XX分析——系统线程部分(新瓶旧酒)
发表于: 2020-6-27 11:29 23858

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

2020-6-27 11:29
23858

这里分析的是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时间差不一致



如果时间不一致:



[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 15
支持
分享
最新回复 (32)
雪    币: 789
活跃值: (2014)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
他强制蓝屏一直可以的
2020-6-27 11:37
1
雪    币: 433
活跃值: (1900)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
UtilGetObjectType是怎么实现的呀
2020-6-27 17:10
0
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
4
萌克力 UtilGetObjectType是怎么实现的呀
if(g_pObGetObjectType) g_pObGetObjectType(Object)
2020-6-27 18:46
0
雪    币: 6124
活跃值: (4651)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
他蓝屏真的有一手的
2020-6-27 18:58
0
雪    币: 1510
活跃值: (3407)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
cr4.tsd bit   这个位表示什么含义?
2020-6-27 20:17
0
雪    币: 1055
活跃值: (412)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
表哥脱壳一直可以的
2020-6-27 21:16
0
雪    币: 433
活跃值: (1900)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8
hzqst if(g_pObGetObjectType) g_pObGetObjectType(Object)
感谢
2020-6-27 21:57
0
雪    币: 7293
活跃值: (2024)
能力值: ( LV4,RANK:42 )
在线值:
发帖
回帖
粉丝
9
tmflxw cr4.tsd bit 这个位表示什么含义?
CR4.TSD
Time Stamp Disable (bit 2 of CR4) — Restricts the execution of the RDTSC instruction to procedures
running at privilege level 0 when set; allows RDTSC instruction to be executed at any privilege level when
clear. This bit also applies to the RDTSCP instruction if supported (if CPUID.80000001H:EDX[27] = 1).
2020-6-28 04:15
0
雪    币: 4925
活跃值: (2350)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
mark
2020-6-28 06:24
0
雪    币: 914
活跃值: (2448)
能力值: ( LV5,RANK:68 )
在线值:
发帖
回帖
粉丝
11
666
2020-6-28 09:23
0
雪    币: 1055
活跃值: (412)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
萌克力 感谢

能不能说下,更具体一点吗  还是不太懂那个UtilGetObjectType是怎么实现的呀

最后于 2020-6-28 10:28 被provence编辑 ,原因:
2020-6-28 10:27
0
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
13
provence 萌克力 感谢 能不能说下,更具体一点吗  还是不太懂那个UtilGetObjectType是怎么实现的呀
直接call ntoskrnl.ObGetObjectType
2020-6-28 11:36
0
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
14
provence 萌克力 感谢 能不能说下,更具体一点吗  还是不太懂那个UtilGetObjectType是怎么实现的呀
直接call ntoskrnl的ObGetObjectType
2020-6-28 11:36
0
雪    币: 1055
活跃值: (412)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
hzqst 直接call ntoskrnl的ObGetObjectType
谢谢大表哥
2020-6-28 16:18
0
雪    币: 712
活跃值: (121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
大表哥,再分析下反双机调试
2020-6-28 16:24
0
雪    币: 711
活跃值: (253)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
大表哥牛皮
2020-6-29 09:05
0
雪    币: 1402
活跃值: (341)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
大表哥牛批 我的偶像大表哥。
2020-6-29 09:34
0
雪    币: 1420
活跃值: (2151)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
19
表哥 牛逼 
2020-6-29 10:00
0
雪    币: 148
活跃值: (671)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
大表哥牛批
2020-7-2 13:04
0
雪    币: 23
活跃值: (207)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21



这里应该是  检测KdDebuggerNotPresent   如果为0  触发int2D--> 则调用KdCommandString   参数deatch   强制分离调试器

2020-7-3 14:57
0
雪    币: 119
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
22
大佬  想向你请教一下  刚入门  需要怎么学习好点  望指点迷津,让孤独的道路不再迷茫
2020-7-14 05:08
0
雪    币: 615
活跃值: (580)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
23
2020-7-15 09:13
0
雪    币: 3288
活跃值: (3878)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
24
很不巧,你就是记错了,r3模式的代码段选择子0x1b对应的描述符limit 是0xFFFFFFFF
2020-7-21 19:35
0
游客
登录 | 注册 方可回帖
返回
//