不乱于心,不困于情。
不畏将来,不念过往。如此,安好。

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

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


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

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

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

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


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

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

内核驱动层(KnLiveDbg.sys)

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

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

用户态层(KnLiveDbg.exe)

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

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


三、核心功能一览

内存读写

地址翻译

图1–kn-live-dbg:一个形似调试器的Windows内核级 live debugging 神器–seo优化_前端开发_渗透技术

符号与类型

内置AI辅助

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

这是一个还在快速演进的功能,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后端执行。


五、使用要求与构建

构建依赖

运行要求

快速构建

.\tools\build.ps1 -Configuration Release

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

启动

cd .\x64\Release.\KnLiveDbg.exe

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


六、实战场景

场景一:枚举内核回调

callbacks objectcallbacks registrycallbacks processcallbacks minifilter

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

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

lm filter ntoskrnlx nt!PsLoadedModuleListquery 
100

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

场景三:物理内存直读

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

phys 0x1000 100

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


七、总结

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

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

赞(0)
未经允许不得转载:seo优化_前端开发_渗透技术 » kn-live-dbg:一个形似调试器的Windows内核级 live debugging 神器