kn-live-dbg:一个形似调试器的Windows内核级livedebugging神器

admin 2026-05-24 05:18:21 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: kn-live-dbg是一个Windows内核级实时调试工具,通过内核驱动直接读写内存绕过传统调试协议限制,提供虚拟/物理内存操作、符号解析、回调枚举等功能。工具采用驱动层+用户态TUI架构,支持WinDbg兼容命令和AI辅助规划,适用于安全研究场景如内核回调分析和内存取证,需测试签名模式运行。 综合评分: 85 文章分类: 逆向分析,二进制安全,红队,内网渗透,安全工具


cover_image

kn-live-dbg:一个形似调试器的Windows内核级 live debugging 神器

原创

Red Hunter Red Hunter

黑白之道

2026年5月23日 09:11 江西

在小说阅读器读本章

去阅读

导语:当你需要在Windows系统上研究内核行为时,第一反应大概是掏出WinDbg。但你有没有想过——如果有一个工具,看起来像调试器,实际上却是一个轻量级的内核级内存浏览器,那会是什么体验?kn-live-dbg就是这个答案。它用内核驱动绕过传统调试协议的种种限制,直接把内核内存搬到用户态TUI界面上。


一、工具定位:看起来像调试器,但它不是调试器

已关注

关注

重播 分享 赞

关闭

观看更多

更多

退出全屏

切换到竖屏全屏退出全屏

黑白之道已关注

分享视频

,时长04:01

0/0

00:00/04:01

切换到横屏模式

继续播放

[ ]

进度条,百分之0

播放

00:00

/

04:01

04:01

倍速

全屏

倍速播放中

0.5倍 0.75倍 1.0倍 1.5倍 2.0倍

超清 流畅

 您的浏览器不支持 video 标签

继续观看

kn-live-dbg:一个形似调试器的Windows内核级 live debugging 神器

观看更多

转载

,

kn-live-dbg:一个形似调试器的Windows内核级 live debugging 神器

黑白之道已关注

分享点赞在看

已同步到看一看写下你的评论

视频详情

kn-live-dbg(Kernel Live Debugger)诞生于一个朴素的愿望:把LiveKD最精华的部分抽出来,做成一个更纯粹的内核内存访问工具。

它的核心思路很清晰——内核驱动负责最底层的事情,通过MmCopyMemory提供虚拟和物理内存读写IOCTL;用户态的TUI控制台负责服务生命周期管理、符号加载、类型解析,以及所有操作交互。把调试协议(KdConnectApi之类)甩在一边,直接读写内核内存。

这个架构让它不需要管理员配置KDNET网络调试,也不需要两台机器,一个本地控制台搞定所有。


二、架构拆解:驱动层 + 用户态层

整个项目分为两个核心部分:

内核驱动层(KnLiveDbg.sys)

这是一个标准的WDM驱动,提供两类IOCTL:

  • 虚拟内存操作:通过页表walk把虚拟地址翻译成物理地址,然后用MmCopyMemory读写
  • 物理内存操作:直接读写物理内存,同样基于MmCopyMemory
  • 模块枚举:调用NtQuerySystemInformation获取已加载的内核模块列表

设备名称为\\.\KnLiveDbg,DACL设置为仅 Administrators 和 SYSTEM 可访问,单实例控制器模式。

用户态层(KnLiveDbg.exe)

这是一个提升权限的TUI应用,负责:

  • 通过SCM管理驱动的安装、启动、停止和删除
  • 用DbgHelp加载内核符号(默认从微软符号服务器下载nt.pdb到EXE同目录的symbols缓存)
  • 实现一套WinDbg兼容的命令体系
  • 提供可选的DbgEng后端,路由复杂命令(扩展命令、停止状态命令、解析密集型命令)到DbgEng执行

另外还有一个KnLiveDbgProbe.sys——一个”正向控制测试驱动”,它维护已知地址的测试buffer,用于验证读写操作的准确性。


三、核心功能一览

内存读写

  • 虚拟内存读取d*系列命令(db/dc/dd/dq等),支持多种数据类型格式
  • 物理内存读取phys系列命令,直接操作物理地址
  • 虚拟内存写入e*系列命令(eb/ew/ed/eq等),默认在System进程(PID 4)上下文执行
  • 物理内存写入:通过!db/!dw/!dd/!dq物理写入命令

地址翻译

  • 虚拟到物理vtop命令,对任意内核虚拟地址执行x64页表walk
  • LA57检测:自动检测是否使用PML5分页,报告每级页表条目的物理地址
  • 进程DTB翻译vtop /process <pid>使用进程的EPROCESS.Pcb.DirectoryTableBase作为CR3
  • 进程感知命令d* /process <pid>e* /process <pid>自动切换进程上下文

符号与类型

  • 符号解析xlnaddr命令,支持模块过滤
  • PDB类型解析:解析nt内核PDB中的UDT类型
  • 对象管理器回调枚举callbacks命令能枚举对象管理器过滤器、注册表回调、进程/线程/镜像加载回调、Minifilter回调,并标注函数地址、所属模块和上下文类型
  • 类型显示dtdtx命令,支持递归层数控制、结构展开、位域显示

内置AI辅助

kn-live-dbg还集成了一层AI助手provider,支持:

  • Codex CLIChatGPT/Codex OAuthDeepSeekOpenRouter
  • ai plan:给定一个操作目标,让AI规划执行步骤
  • ai explain:解释某个只读命令的执行结果
  • ai run:执行AI规划的一个或多个步骤
  • ai write:在AI确认安全后写入内存
  • ai report:生成调试会话报告

这是一个还在快速演进的功能,AI在其中的角色是” advisory command planning”——帮你想清楚怎么操作,而不是替代你操作。


四、命令覆盖:WinDbg兼容

根据项目文档,native命令覆盖了WinDbg的以下类别:

| 类别 | 命令 | | — | — | | 内存读写 | d*, da, db, dc, dd, dD, df, dp, dq, du, dw, dW, dyb, dyd, e* | | 物理内存 | phys, pdb, pdw, pdd, pdq, !db, !dw, !dd, !dq | | 符号/模块 | .sympath, .reload, lm, x, ln, addr | | 类型解析 | dt, dtx(支持递归和位域) | | 回调枚举 | callbacks [object|registry|process|thread|imageload|minifilter] | | 内存搜索 | s(-b|-w|-d|-q) | | 内存比较/填充/移动 | c, f, m | | 反汇编 | u, uf | | 进程上下文 | procctx, peb/ped/peq, !eb/!ew/!ed/!eq, pe* | | 驱动状态 | drvstatus, probe, version |

同时,stop-state命令(kdkdinit)、parser-heavy命令、扩展命令和meta命令都会被路由到DbgEng后端执行。


五、使用要求与构建

构建依赖

  • Visual Studio 2022
  • Windows Driver Kit(WDK)10.0.26100.0
  • x64开发者shell或PowerShell中MSBuild在默认路径
  • 第三方:Zydis v4.1.1(已vendored在third_party/zydis/amalgamated

运行要求

  • 必须启用测试签名模式bcdedit /set testsigning on)来加载驱动,或使用EV代码签名证书对驱动签名
  • 需要管理员权限运行EXE
  • 单实例运行,同时只能有一个KnLiveDbg.exe进程

快速构建

.\tools\build.ps1&nbsp;-Configuration&nbsp;Release

发布包生成在release\KnLiveDbg-<version>-Release-x64.zip,包含EXE/SYS文件、调试工具runtime、PDB/CER/CAT文件和配置文件。

启动

cd&nbsp;.\x64\Release
.\KnLiveDbg.exe

启动时会自动:安装/更新驱动、创建服务、等待驱动就绪、下载nt内核符号到EXE同目录的symbols缓存、加载probe驱动,然后显示彩色欢迎横幅和控制台仪表板,最后出现knkd>提示符。


六、实战场景

场景一:枚举内核回调

callbacks object
callbacks registry
callbacks process
callbacks minifilter

在安全研究里,你经常需要知道系统上注册了哪些内核回调——它们是EDR实现钩子的地方,也是攻击者寻找APC注入、进程监控、注册表监控绕过的关键位置。kn-live-dbg直接解析PDB类型信息,把这些回调的函数地址、模块名和上下文结构都标注出来,效率比手动解析高得多。

场景二:读取引导加载的内核模块

lm filter ntoskrnl
x nt!PsLoadedModuleList
query <address> 100

枚举已加载内核模块,查看关键数据结构,不需要搭KdNET网络调试环境,一行命令直接拿到。

场景三:物理内存直读

当你想绕过虚拟地址空间布局的复杂性,直接看物理内存内容时:

phys 0x1000 100

物理地址直接访问,对于分析固件dump、内存镜像取证等场景很有用。


七、总结

kn-live-dbg是一个定位清晰的内核安全研究工具——它不是来替代WinDbg的,它是来解决WinDbg在某些场景下的不便性的。如果你只需要快速读写内核内存、查看符号和回调枚举,它比WinDbg轻量得多;如果你需要完整的调试协议和断点支持,WinDbg依然是首选。

项目地址:github.com/kernullist/kn-live-dbg

版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:黑白之道 Red Hunter Red Hunter《kn-live-dbg:一个形似调试器的Windows内核级 live debugging 神器》

评论:0   参与:  0