Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用Windbg调试内核

使用Windbg调试内核

作者头像
战神伽罗
发布于 2019-07-24 00:42:24
发布于 2019-07-24 00:42:24
1.6K0
举报

Windbg是微软开发的免费源码级调试工具。Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。

1.从http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx下载Install Debugging Tools for Windows 32-bit Version

2.从http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx下载Windows Symbol Packages,安装到D:\Program Files\Symbols

3.启动Windbg,File->Symbol File Path填写以上Symbols安装路径:

D:\Program Files\Symbols

4.File->Kernel Debug->Local,在下面执行lkd> !process出现以下错误:

NT symbols are incorrect, please fix symbols

这个可能是D:\Program Files\Symbols\exe\ntoskrnl.pdb破损所致。

解决方案:将第3步中的Symbol File Path填写为:

D:\Program Files\Symbols;

SRV*D:\Program Files\Symbols*http://msdl.microsoft.com/download/symbols

按照这样设置,WinDbg将先从本地文件夹D:\Program Files\Symbols中查找Symbol,如果找不到,则自动从MS的Symbol Server上下载所需要的Symbol,并且在本地D:\Program Files\Symbols文件夹下维持一份拷贝。

5.内核调试

FileàOpenExecutableà可以选择一个可执行文件进行调试; FileàAttache to a Processà可以选择一个运行中的进程,并对其进行调试;

FileàKernel DebugàLocalà可以选择本地内核调试。

一旦连接到了内核调试模式中,你可以使用众多的内核扩展命令(以“!”开头)来显示内核数据结构的内容。

6.用内核扩展命令查看常见内核对象数据结构(每条命令以分号隔开)

(1)进程:lkd> !process [0 0];dt nt!_eprocess;dt nt!_kprocess;

(2)线程:lkd> !thread;dt nt!_ethread;dt nt!_kthread;

(3)I/O请求包:lkd> dt nt!_irp;!irpfind;

(4)常见同步对象:lkd> dt nt!_kevent;lkd> dt nt!_kmutant;lkd> dt nt!_ksemaphore;

(5)作业:lkd> !job;会话(lkd> !session);内存管理(lkd> !vm)的命令等。

显示内核符号中所包含的类型信息的内核结构列表àlkd> dt nt!_*,若需递归显示子结构请使用“-r”开关。在.hh后面添加关键字,将显示该命令的帮助,例如:lkd>.hh irp。

详情参考:Debugging Tools For Windows help referenceàDebuggersàDebugger ReferenceàDebugger Extension Commands。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Windbg调试----Windbg入门
Windbg简单来说就是一个Windows下对用户态/内核态的程序进行调试,以及对Core Dump文件的分析。对于Crash,资源泄露,死锁等问题的分析,Windbg是一个强有力的利器。
河边一枝柳
2021/08/06
2.7K0
Windbg调试----Windbg入门
如何分析 WindowsDump:BSOD 分析与 WinDbg 使用(二)
本文介绍了如何使用Windows系统自带的WinDbg工具进行蓝屏死机(BSOD)故障排查和调试。通过介绍WinDbg工具的常见命令和功能,以及实际案例分析,帮助读者掌握如何利用WinDbg工具进行蓝屏死机故障的排除和调试。
李斯达
2017/07/21
7K2
如何分析 WindowsDump:BSOD 分析与 WinDbg 使用(二)
windbg符号表问题
在系统环境变量添加一个 _NT_SYMBOL_PATH 值为srv*d:\symbols*http://msdl.microsoft.com/download/symbols
战神伽罗
2020/10/26
2.3K1
windbg符号表问题
驱动开发:WinDBG 配置内核双机调试
WinDBG 是在windows平台下,强大的用户态和内核态调试工具,相比较于Visual Studio它是一个轻量级的调试工具,所谓轻量级指的是它的安装文件大小较小,但是其调试功能却比VS更为强大,WinDBG由于是微软的产品所以能够调试Windows系统的内核,另外一个用途是可以用来分析dump数据,本笔记用于记录如何开启Windows系统内核调试功能,并使用WinDBG调试驱动。
王瑞MVP
2022/12/20
1.7K0
驱动开发:WinDBG 配置内核双机调试
获取和分析Dump的几种工具简介[通俗易懂]
最近在进一步学习support技能的时候,了解到分析Dump的重要性,经过学习,做一些笔记。
全栈程序员站长
2022/11/11
18.3K1
获取和分析Dump的几种工具简介[通俗易懂]
电脑蓝屏了怎么办|电脑蓝屏如何回复|当你电脑蓝屏时的粗暴解决方案
最近不知道怎么回事,家里电脑经常性地出现蓝屏(先死机后蓝屏),很多时候有些文档没有保存便蓝屏导致文档丢失,其中也包括您现在正在看到的这一篇文章(撰写本文时,蓝了一次),以前一直比较懒,重启大法一顿怼,然后重新再做编辑,只不过PPT重做简直要人命,无奈之下,放下了所有的工作,来研究研究蓝屏的原因,顺便正儿八经使用一下Typora。
梦溪
2021/12/10
3.4K2
电脑蓝屏了怎么办|电脑蓝屏如何回复|当你电脑蓝屏时的粗暴解决方案
内核,配置WinDbg,调试操作系统(双机调试)
PS: 设置双机调试之前,请先安装虚拟机,并且安装好XP系统.这里不做演示.直接设置.
IBinary
2020/08/14
1.3K0
WinDbg安装与使用
WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。
Java架构师必看
2021/03/22
1.5K0
WinDbg安装与使用
Windows程序内存泄漏(Memory Leak)分析之UMDH
小木发现线上的程序通过任务管理器发现内存不断的增长,怀疑是不是内存泄漏呢?用户态内存泄漏可能是句柄泄漏,堆内存泄露,Socket, GDI对象等等。而对于C++程序员来说,碰到最多的无疑是堆内存泄露:也就是通过malloc或者new从堆上申请的内存,使用完成后,并没有释放,导致程序使用的内存越来越多。
河边一枝柳
2021/08/06
1.5K0
Windows程序内存泄漏(Memory Leak)分析之UMDH
在winxp环境下,用windbg查看GDT表、IDT表、TSS描述符
一开始什么都不会,不知道如何下手,看ppt上面有个kd>,都不知道kd怎么出来的,自己打开windbg照着网上的选择attach to ……,随便找了个进程打开也不是kd开头的。网上搜索了一圈,才觉得查看GDT、IDT、TSS这些应该是属于内核调试的。收获最大的是这篇博客(http://www.cnblogs.com/hustcat/articles/1714453.html),看了这篇文章之后进入内核调试,后面的问题就不大了。
战神伽罗
2019/07/24
1.6K0
使用Windbg和SoS扩展调试分析.NET程序
在博客堂的不是我舍不得 - High CPU in GC(都是+=惹的祸,为啥不用StringBuilder呢?)、 不是我舍不得 - .NET里面的Out Of Memory 看到很多人在问如何分析dump,所以就写下了这篇短文,抛砖引玉。 一、安装 DebuggingToolsforWindows: 从以下 Microsoft 网站下载 DebuggingToolsforWindows: http://www.microsoft.com/whdc/devtools/debugging/installx8
张善友
2018/01/19
1.6K0
原创Paper | Windows 的 PPL 安全机制和绕过
Windows 从 vista 版本引入一种进程保护机制(Process Protection),用于更进一步的控制进程的访问级别,在此之前,用户只需要使用 SeDebugPrivilege 令牌权限即可获取任意进程的所有访问权限;随后 Windows8.1 在此进程保护的基础上,扩展引入了进程保护光机制(Protected Process Light),简称 PPL 机制,其能提供更加细粒度化的进程访问权限控制。
Seebug漏洞平台
2023/08/23
1.3K0
原创Paper | Windows 的 PPL 安全机制和绕过
浏览器开发系列第五篇:Debugging with WinDBG
Windbg相信windows开发的人都知道,有些人用的溜儿溜儿的,有个crash,直接拿这个工具一分析,就定位出来了。非常好用。以前有个同事,做sdk开发的,会各种命令。来北京后,还去过微软面试(不过当时是做外包,挣得也不少),问的问题就包括会不会用windbg定位问题。当时就会几个简单的命令,最后还是没面上(不堪回首)。 使用windbg调试windows下的程序,只要有符号文件,问题定位分分钟的事。下面主要讲一下使用windbg调试chromium。有些是从官网上对翻过来的,如果大家看不明白
程序员互动联盟
2018/03/12
1.8K0
浏览器开发系列第五篇:Debugging with WinDBG
Windows内核实验
教程是周壑老师在 B 站的 windows 内核实验系列视频,这只是笔记,不是教程,大家想要学习可以去 B 站找视频看
yichen
2020/02/14
1K0
Windows内核实验
简单判断是否是cve-2019-0708攻击
今早一起床,发现cve-2019-0708 exp已经公开。但是作为安服人员,攻击是一回事,应急又是另一大回事。这里就简单来判断受害者机器是否受到了cve-2019-0708攻击。
Jumbo
2019/09/11
1.1K0
简单判断是否是cve-2019-0708攻击
windbg使用
配置环境变量 _NT_SYMBOL_PATH,(;)路径分割符 .;SRV*http://msdl.microsoft.com/download/symbolsD:\Program Files\symbol
sofu456
2019/12/20
9250
windbg使用
驱动开发:挂接SSDT内核钩子
SSDT 中文名称为系统服务描述符表,该表的作用是将Ring3应用层与Ring0内核层,两者的API函数连接起来,起到承上启下的作用,SSDT并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基址、服务函数个数等,SSDT 通过修改此表的函数地址可以对常用 Windows 函数进行内核级的Hook,从而实现对一些核心的系统动作进行过滤、监控的目的,接下来将演示如何通过编写简单的驱动程序,来实现搜索 SSDT 函数的地址,并能够实现简单的内核 Hook 挂钩。
王瑞MVP
2022/12/20
8730
驱动开发:挂接SSDT内核钩子
64位内核第三讲,Windbg的使用.以及命令
区别: bp 下的断点是死断点.函数名字变了但断点还是在哪里. bu 自动跟你你的函数进行下段点.不用担心会变. 在新的windbg中,bp失败.会自动换成bu.
IBinary
2019/06/14
2K0
64位内核第三讲,Windbg的使用.以及命令
vista开机启动项怎么设置_windows7/vista with slic loader
用 原文链接:http://advdbg.org/blogs/advdbg_system/articles/784.aspx
全栈程序员站长
2022/11/07
1.5K0
vista开机启动项怎么设置_windows7/vista with slic loader
windbg调试C源码级驱动
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/debug-universal-drivers---step-by-step-lab--echo-kernel-mode-
战神伽罗
2019/07/24
9520
相关推荐
Windbg调试----Windbg入门
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档