在Sysinternals livekd中如何通过PID查询对应进程的相关信息?
解决方案
基础语法校验
!process传入十六进制PID时必须带0x前缀,直接输入2A0会被调试器识别为无效符号而非十六进制数值。你可以先执行以下命令验证语法是否正确:
!process 0x2A0 0
如果仍然返回"Cannot resolve nt!_EPROCESS object type"报错,按照以下步骤修复核心的LiveKdD.sys加载问题。
核心故障修复(LiveKdD.sys加载失败)
PID查询失效的根源是LiveKdD.sys驱动未正常加载:!process传入PID时需要驱动提供实时的PID到EPROCESS结构地址的映射能力,而传入进程名查询时调试器是直接遍历已加载的进程模块列表匹配,不需要调用驱动的PID映射接口,因此可以正常返回结果。
按优先级尝试以下修复方案:
- 替换为最新版Sysinternals LiveKD:旧版本LiveKD与新Windows系统的驱动签名兼容性差,直接替换为最新发布的LiveKD可解决大部分签名拦截问题。
- 以管理员权限启动LiveKD:缺少系统管理员权限会直接导致驱动加载被系统安全机制拦截,右键点击LiveKD程序选择「以管理员身份运行」后再尝试操作。
- 临时开启测试签名模式验证:Windows 10/11默认开启驱动强制签名,部分预览版LiveKD驱动未做WHQL签名会被拦截,可通过以下步骤临时关闭:
- 以管理员身份启动命令提示符,执行
bcdedit /set testsigning on - 重启系统后再启动LiveKD测试功能
- 问题解决后可执行
bcdedit /set testsigning off重启恢复默认安全设置
- 以管理员身份启动命令提示符,执行
- 重置LiveKd驱动注册项:打开注册表编辑器,删除
HKLM\SYSTEM\CurrentControlSet\Services\LiveKdD项,重启系统后LiveKD会自动重新注册驱动,解决已存在的驱动配置损坏问题。
临时替代方案
如果暂时无法修复驱动加载问题,可以通过以下方式绕过PID查询限制:
- 执行
!process 0 0 进程名列出对应进程的所有运行实例,找到目标PID对应的EPROCESS结构地址 - 直接通过结构地址查询详情:
!process <EPROCESS地址> 0x1f
内容的提问来源于stack exchange,提问作者ARV
相关产品推荐
相关产品推荐

