-
-
[原创]记一次 VMP 对 TitanHide 的检测分析
-
-
[原创]记一次 VMP 对 TitanHide 的检测分析
记一次 VMP 对 TitanHide 的检测分析
VMProtect(简称 VMP)想必大家都很熟悉。随着其版本的不断迭代,高版本 VMP 的分析难度日益增加。
了解 TitanHide 的朋友应该都知道,它是一款基于 Ring 0 层、通过 HOOK SSDT 方式实现的开源反反调试驱动。
那么,VMP 究竟是依据什么来检测 TitanHide 的呢?又是如何完成这一检测过程的?在深入分析之前,我们先简单回顾一下 TitanHide 的基本原理。
许多用户可能已经用过或了解过 TitanHide。在分析过程中我发现,VMP 主要是通过对 TitanHide 的驱动设备符号(Device Symbol)进行检测来实现识别的。
核心代码如下:
起初我在分析 VMP 时,误以为它检测了其他特征,甚至尝试重新编写了一个驱动来规避,但最终确认其检测点正是上述的设备名称。
为了规避静态字符串扫描,VMP 采用了在栈上动态构造字符的方式。以下是具体的汇编逻辑:
VMP 逐字节将字符串 \\?\TitanHide 写入栈内存:
随后,代码计算字符串长度并构建 UNICODE_STRING 结构:
接着完成结构体的具体字段填充:
最后,构建用于文件操作的 OBJECT_ATTRIBUTES 结构:
跳过繁琐的结构初始化细节,直接关注最关键的部分:VMP 直接使用 syscall 指令调用 NtOpenFile API。
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 1小时前
被Crystal1编辑
,原因: 调整格式