导语:当你需要在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,用于验证读写操作的准确性。
三、核心功能一览
内存读写
地址翻译

符号与类型
内置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命令(kd、kdinit)、parser-heavy命令、扩展命令和meta命令都会被路由到DbgEng后端执行。
五、使用要求与构建
构建依赖
运行要求
快速构建
.\tools\build.ps1 -Configuration Release
发布包生成在release\KnLiveDbg-,包含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
seo优化_前端开发_渗透技术








