首页
社区
课程
招聘
[翻译]使用NtQuerySystemInformation和DuplicateHandle的系统级反调试技术
发表于: 2022-2-16 16:50 17099

[翻译]使用NtQuerySystemInformation和DuplicateHandle的系统级反调试技术

2022-2-16 16:50
17099

翻译

原文地址:https://www.x86matthew.com/view_post?id=system_anti_debug

功能:使用NtQuerySystemInformation和DuplicateHandle的系统级反调试技术

我开发了一种反调试技术,它不加区别地针对用户模式调试器,而不是检测是否有个别进程被调试。

总的来说,这种方法的工作原理如下:

1. 使用带有SystemExtendedHandleInformation的NtQuerySystemInformation检索系统中所有打开的句柄列表。

2. 检查是否有进程包含一个活动的调试句柄。

3. 使用带有DUPLICATE_CLOSE_SOURCE标志的DuplicateHandle终止远程进程中的这个句柄。

4. 循环回到步骤#1。

使上述方法复杂化的一件事是在步骤2中识别调试句柄。每个句柄的类型都是通过NtQuerySystemInformation返回的ObjectTypeIndex字段来识别的,但这个值在不同版本的Windows中并不一致。

我们显然可以在一个查找表中硬编码各种可能的值,但通用的解决方案总是更好的。为了计算出当前操作系统的调试手柄类型索引,我采取了以下步骤:


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

收藏
免费 5
支持
分享
最新回复 (2)
雪    币: 345
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
好像在x64环境下会出现问题,不知道怎么解决
2022-3-11 14:43
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
AlphaYang 好像在x64环境下会出现问题,不知道怎么解决
他的那个结构体定义的有问题64位下很多值都要使用ULONG_PTR 而不是 ULONG
2022-5-20 06:54
0
游客
登录 | 注册 方可回帖
返回
//