- EPROCESS 块包含内核 Windows 用于管理活动进程。
- !process 和 .process 调试器扩展允许您列出、检查和更改内核级别的进程上下文。
- DKOM 等先进技术利用对 EPROCESS 的访问来隐藏进程并逃避传统的安全工具。

访问区块 进程 Windows 系统中的 网络安全, 开发商 驱动程序 对于那些研究操作系统内部工作原理的人来说,EPROCESS 经常在高级调试、取证分析工具的开发以及研究攻击技术(例如直接操作内核中的对象,即 DKOM(直接内核对象操作))的背景下被讨论。
如果你曾经好奇过系统如何保护其进程,或者某些 rootkit 如何设法隐藏操作系统本身的进程,那么关键就在于对以下结构的了解和操作: 进程通过本指南,您将了解 comandos Windows 调试器,如何解释进程的内部信息,以及如何使用和修改这些块以用于合法或恶意目的。所有这些都以清晰的语言讲解,面向高级用户和技术用户,但每个步骤都以易于理解的方式进行了解释。
什么是 EPROCESS 块以及它为什么重要?

在 Windows 体系结构中,每个正在运行的进程在内存中都有一个关联的数据块,称为 进程该块包含管理进程的所有相关信息:标识符、优先级、地址空间、线程列表、安全令牌以及有关进程如何运行和管理的无数内部细节。
块 进程 它驻留在内核内存中,对系统运行至关重要。访问它实际上意味着能够理解和修改系统中任何进程的行为。
内核模式调试:起点
访问并检查块 进程,你通常需要执行 内核模式调试这种方法可以深入分析 Windows 系统上的低级进程和内存,因为许多传统的用户工具根本没有直接与内核内存交互所需的权限。
Windows 调试器配备了非常强大的扩展,包括 !过程 y 。过程,它允许您检查、过滤和操作系统中现有的流程块。
使用 !process 命令
扩展名 !过程 它是内核模式分析和开发环境中使用最广泛的工具之一。其主要功能是显示有关一个或所有活动进程的详细信息,包括它们的块地址。 进程.
重要! 此命令只能在 Windows 内核模式调试会话期间运行。如果您尝试在此上下文之外使用它,它将无法工作或不会显示预期的信息。
!process 命令的基本语法
通常的调用格式如下:
!process ]
或者,通过指定其他选项:
!process 0 Flags ImageName
关键参数解释
- /s 会话:允许您按特定会话过滤进程。
- /m 模块:仅显示与特定模块相关的进程。
- 工艺应用:这可以是 EPROCESS 块的十六进制地址或 PID(进程标识符)。如果省略,该命令将显示常规信息或有关当前上下文的信息。
- 旗:确定输出详细程度的值(例如,0 表示基本信息,0x7 表示详细级别)。
- 图像名称:允许您搜索可执行文件与指定名称匹配的进程。通常指定二进制文件的名称(例如, NOTEPAD.EXE) 进行过滤。
如果你把 工艺应用 等于零,你省略 图像名称,调试器将显示所有活动进程的数据。如果您使用 -1,则取当前正在调试的进程。
解释 !process 的输出
典型输出示例:
kd> !process 0 0
NT ACTIVE PROCESS DUMP
PROCESS 80a02a60 Cid: 0002 Peb: 00000000 ParentCid: 0000 DirBase: 00006e05 ObjectTable: 80a03788 TableSize: 150. Image: System
...
每个条目对应一个进程,每个条目都有一个“PROCESS”字段和一个十六进制地址。这是该块的内存地址。 进程 为该过程
- 工艺方向: “PROCESS” 之后的第一个十六进制值(例如, 0x80a02a60).
- 熙:进程标识符(PID)。
- b:PEB(进程环境块)的地址,与用户空间相关。
- ParentCid:父进程的PID。
- 目录库:页目录基址(内存管理)。
- 对象表:与进程关联的对象表的地址。
- 图片:与进程关联的可执行文件的名称。
细节: 要获取完整信息,您可以运行:
!process 7
第二个参数(7)表示应显示有关该进程的最大有用信息量,包括线程、资源和内存使用情况的详细信息。
超越列表:访问和更改流程上下文
如果您不仅想检查,还想操作进程内存,则可以使用命令 。过程:
.process ]
此命令允许您将调试上下文更改为阻止的进程 进程 您所指定的。从那一刻起,调试器将能够访问 虚拟内存 该进程,检查其加载的模块和命令行参数,以及其他操作。
- /i:仅在实时调试中,强制对进程进行侵入式调试。
- /p:翻译进程页表条目以进行深入分析。
- /r:充电 符号 改变流程后的用户。
- /P:翻译所有进程的页表。
争论 工艺应用 是块的地址 进程 先前获得 !过程.
改变上下文的实际例子:
kd> .process fe3c0d60
Implicit process is now fe3c0d60
完成此操作后,您可以使用以下命令 !peb 分析进程的结构、其加载的模块和环境变量。
了解标志和高级分析选项
参数 旗 命令的 !过程 允许您调整输出的详细程度。一些常见的详细程度如下:
- 位 0(0x1):基本优先级和时间统计。
- 位 1 (0x2):线程和事件列表。
- 位 2 (0x4):摘要视图或带有堆栈跟踪。
- 位 3 (0x8):返回地址和堆栈指针。
- 位 4 (0x10):上下文切换的精度更高。
通过添加十六进制的位来组合这些值(标志 = 0x7 进行完整的分析)。
实际应用:取证、安全、开发和 Rootkit
访问区块 进程 它在合法开发和攻击性网络安全技术中都有多种应用。其中最著名的技术之一是 恶意软件 它是 DKOM。
什么是 DKOM?
DKOM(直接内核对象操作) 它是一种先进的技术,允许您操作内核对象,例如 进程 改变系统的行为。这使得以下操作成为可能:
- 隐藏进程、驱动程序或系统元素。
- 增加进程或线程权限。
- 使取证分析和恶意软件检测变得困难。
通过操纵字段 弗林克 y 眨 结构的 列表条目 en 进程,可以从全局列表中删除一个进程,使其对传统工具不可见。
真实示例:通过驱动程序隐藏进程的技术
假设你开发了一个内核模式驱动程序。使用 PsLookupProcessByProcessId 你得到一个指向 进程 从 PID 开始。然后,找到字段偏移量 弗林克 并修改结构:
- El 弗林克 隐藏进程指向列表中的下一个进程。
- El 眨 下一个进程指向前一个进程,跳过隐藏的进程。
- 隐藏进程更新自己的字段 弗林克 y 眨 保持沉默。
这样,尽管这一流程仍在继续进行,但它从传统上市中消失了。
内核分析的工具、环境和要求
要在此级别执行调试和操作,您需要:
- 调试环境(Windbg、kd) 在内核模式下。
- 适用驱动套件 (WDK/DDK)。
- 适当的标题和符号(ntifs.h).
- 支持的系统(Windows 2000 及更高版本,具有特定于版本的偏移)。
许多示例和 PoC 开发了隐藏驱动程序和用户模式应用程序,以使用 IOCTL 加载并与它们通信。
针对管理员和分析师的安全提示
了解访问和操纵 进程 是检测恶意活动和保护系统的关键。示例包括:
- 检测 rootkit:gmer、ProcL 和其他版本的 psinfo 等工具可以通过执行广泛的内存扫描来查找隐藏的进程。
- 强化体系:更新驱动程序和系统可防止驱动程序漏洞和 DKOM 技术。
- 弱势驾驶员的限制:限制不安全驱动程序的加载,以防止内核篡改。
勒索软件和 EDR 解决方案绕过
一些高级勒索软件样本(例如 BlackByte)也采用类似的技术来规避安全解决方案。它们利用易受攻击的合法驱动程序实时修改内核例程、删除回调函数、操纵有效载荷并禁用 EDR 监控机制(通常通过动态更新特定于内核版本的偏移量来实现),从而使其难以检测。
防御建议包括监控未经授权的驱动程序、使用独立工具验证进程列表的完整性以及限制关键系统上的驱动程序。
对于想要在低级别上理解或保护 Windows 系统的安全专业人员来说,掌握这些技术(无论是合法使用还是恶意使用)都至关重要。了解阻止 进程如何访问它以及如何操作它代表了高级安全和恶意软件逆向工程的重要基础。
对字节世界和一般技术充满热情的作家。我喜欢通过写作分享我的知识,这就是我在这个博客中要做的,向您展示有关小工具、软件、硬件、技术趋势等的所有最有趣的事情。我的目标是帮助您以简单而有趣的方式畅游数字世界。