论坛首页 安全工具分享区 阅读主题

[原创]驱动隐藏进程(1.不蓝屏。2.多种方法。)

356 浏览 12 回复
#1 楼主 2026-06-01 21:08:59
最近在复盘关注的B站UP主的视频,看到有一个视频是驱动隐藏进程不蓝屏的视频,视频地址如下:【【ACZR】驱动隐藏进程,断链不蓝屏效果演示,仅演示非教学】 151K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2T1K9h3I4A6j5X3W2D9K9g2)9J5k6h3y4G2L8g2)9J5c8Y4k6A6k6r3g2G2i4K6u0r3b7W2j5I4z5f1Z5@1L8e0q4%4y4$3N6j5i4K6u0r3i4K6y4r3M7$3S2S2M7X3g2Q4y4h3k6K6L8%4g2J5j5$3g2Q4x3@1c8U0L8%4m8&6i4K6g2X3N6$3g2T1i4K6t1$3j5h3#2H3i4K6y4n7N6X3c8Q4y4h3k6K6L8%4g2J5j5$3g2Q4x3@1b7&6x3r3u0U0y4e0W2S2y4X3q4X3y4U0V1#2x3o6y4U0k6h3b7J5k6U0l9$3z5o6j5&6k6X3g2V1x3X3j5I4j5b7`.`.遂想自己动手亲自试试。于是搜索了一大堆方法整理和整合。方法大概如下:一、DKOM 实现进程隐藏DKOM 就是直接内核对象操作技术(Direct Kernel Object Modification 即直接内核对象修改。它的核心思想是不通过任何 Windows API,而是直接通过驱动程序修改内存中的内核结构体体数据(如 EPROCESS、KTHREAD、TOKEN 等),我们所有的操作都会被系统记录在内存中,而驱动进程隐藏的做旧就是操作进程的EPROCESS结构与线程的ETHREAD结构、链表,要实现进程的隐藏我们只需要将某个进程中的信息,在系统EPROCESS链表中摘除即可实现进程隐藏。DKOM 隐藏进程的本质是操作EPROCESS结构体,EPROCESS结构体中包含了系统中的所有进程相关信息,还有很多指向其他结构的指针,首先我们可以通过WinDBG在内核调试模式下输入dt_eprocess 即可查看到当前的EPROCESS结构体的偏移信息,结构较多。但常用的就下面这几个,我这里给摘出来了(可以使用Ai快速摘出来):1: kd> dt _EPROCESS
nt!_EPROCESS
   +0x000 Pcb              : _KPROCESS
   +0x2e8 UniqueProcessId  : Ptr64 Void                         // 进程PID
   +0x2f0 ActiveProcessLinks : _LIST_ENTRY                    // 活动进程双向链表
   +0x310 CreateTime       : _LARGE_INTEGER                   // 进程创建时间
   +0x360 Token            : _EX_FAST_REF                     // 进程令牌(权限)
   +0x3f8 Peb              : Ptr64 _PEB                       // 指向用户态PEB
   +0x418 ObjectTable      : Ptr64 _HANDLE_TABLE              // 句柄表
   +0x428 WoW64Process     : Ptr64 _EWOW64PROCESS             // 32位进程标识
   +0x450 ImageFileName    : [15] UChar                       // 进程名(如notepad.exe)
   +0x488 ThreadListHead   : _LIST_ENTRY                      // 线程链表头
   +0x498 ActiveThreads    : Uint4B                           // 活动线程数
   +0x4a4 LastThreadExitStatus : Int4B                        // 最后线程退出状态
   +0x500 Vm               : _MMSUPPORT_FULL                  // 内存管理相关
   +0x654 ExitStatus       : Int4B                             // 进程退出状态
   +0x658 VadRoot          : _RTL_AVL_TREE                     // 虚拟地址描述符树
   +0x6c0 ExitTime         : _LARGE_INTEGER                   // 进程退出时间
   +0x6f8 SignatureLevel   : UChar                            // 签名级别
   +0x6fa Protection       : _PS_PROTECTION                   // 进程保护级别
   +0x850 MitigationFlags  : Uint4B                           // 缓解机制标志要实现进程的隐藏,我们需要关注结构中的 ActiveProcessLinks:ActiveProcessLinks 核心速记
   +0x188 ActiveProcessLinks : _LIST_ENTRY         // 活动进程双向链表 (DKOM 隐藏进程的“手术位置”)

   - 类型: _LIST_ENTRY (包含 Flink 和 Blink 两个指针)
   - 作用: Windows 内核通过该链表串联所有活跃进程,供任务管理器、Tasklist 等工具遍历显示。
   - 断链原理: 令目标进程的前驱节点指向后继节点,使目标节点在系统遍历路径上“消失”。
   - 风险点: 
       1. PatchGuard 检测: 触发频率极高,需配合其他手段绕过。
       2. 进程退出: 若不还原链表直接关闭进程,内核删除节点时会导致 BSoD (蓝屏)。
       3. 交叉检测: 无法躲过针对 PspCidTable 或会话链表 (SessionProcessLinks) 的深度扫描。该指针把每个进程的EPROCESS结构体连接成了双向链表,我们可以使用 ZwQuerySystemInformation 这个函数来遍历出所有的进程信息,要实现进程的隐藏,只需要将某个进程的EPROCESS从结构体中摘除,那么通过ZwQuerySystemInformation函数就无法遍历出被摘链的进程了,从而实现了进程的隐藏。在实现进程隐藏之前

...(已截断)

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-290738.htm
#2 2026-06-01 21:08:59
不好意思,由于时间原因,暂时没能把后续补全,晚点我会对内容进行补全。同时该帖会持续更新方法,以后有其他方法了也会更新到帖子里,希望大家可以收藏一下常来看看
#3 2026-06-01 21:08:59
感谢分享。直接COPY第一份驱动源码编译成功,在WIN10x64 LTSB2016中加载驱动,成功隐藏了进程calc.exe。
但是有两个问题:
1、隐藏后的进程用PChunter能看到,并显示红色标记。
2、隐藏进程后,运行带NP保护的游戏,NP加载失败,进不了游戏。关闭calc.exe并卸载驱动后,再次打开带NP保护的游戏,才能正常加载NP并进入游戏。
#4 2026-06-01 21:08:59
cjshpzh

感谢分享。直接COPY第一份驱动源码编译成功,在WIN10x64 LTSB2016中加载驱动,成功隐藏了进程calc.exe。
但是有两个问题:
1、隐藏后的进程用PChunter能看到,并显示红 ...
OK,后续会钻研研究这个的,希望你收藏一下帖子,或者等后续我更新了回来会再引用你回复给你提个醒的
#5 2026-06-01 21:08:59
感谢分享,我这边没有编译驱动的环境,但感觉方法1和2,用户层能扫描出来(没用到 PID + 4 这种爆力,只是简单的识别)。
有环境的用户可以试试用这个用户层工具,开启检测隐藏进程来试试(进程页,右键,所有进程检测隐藏进程):https://bbs.kanxue.com/thread-284075.htm,按理能扫描出来。当时做这个功能时,找不到有现成的驱动来测试隐藏进程。所以不知这个识别是否有用。有用或无用的和我说一下,谢谢。


最后于 2026-4-14 21:25
被kagayaki编辑

,原因:
#6 2026-06-01 21:08:59
kagayaki

感谢分享,我这边没有编译驱动的环境,但感觉方法1和2,用户层能扫描出来(没用到 PID + 4 这种爆力,只是简单的识别)。有环境的用户可以试试用 ...
OK,这周休息日我会细看一下的,感谢分享
#7 2026-06-01 21:08:59
BOSC叛忍

OK,这周休息日我会细看一下的,感谢分享
谢谢
#8 2026-06-01 21:08:59
kagayaki

谢谢
我这边测试了,发现果然是能够搜到,看来隐藏的还是不够好,得需要更高级的隐藏方式
#9 2026-06-01 21:08:59
BOSC叛忍

我这边测试了,发现果然是能够搜到,看来隐藏的还是不够好,得需要更高级的隐藏方式
谢谢。
#10 2026-06-01 21:08:59
kagayaki

谢谢。
您的工具做的非常优秀,真的很厉害,向您致敬!
#11 2026-06-01 21:08:59
BOSC叛忍

您的工具做的非常优秀,真的很厉害,向您致敬!
谢谢,优秀说不上,只是个人爱好。
#12 2026-06-01 21:08:59
直接断active肯定PG的,而且进程的链表有很多维护的地方,比如KT里的processlink,vm里的link等等,还有可以通过调度找到线程,线程+220又可以拿到et等等,隐藏永无止境。。。
#13 2026-06-01 21:08:59
wx_垃圾债券之王

直接断active肯定PG的,而且进程的链表有很多维护的地方,比如KT里的processlink,vm里的link等等,还有可以通过调度找到线程,线程+220又可以拿到et等等,隐藏永无止境。。。
受教了,感谢

请登录后参与讨论

立即登录 注册账号