使用WinDbg调试入门(用户模式)
windbg是一个内核模式和用户模式调试器,包含在Windows调试工具中。在这里,提供个实践练习,帮助我们开始使用windbg作为用户模式调试器。
用WinDbg调试记事本
1、导航到安装目录,然后打开windbg.exe。
2、在“文件”菜单上,选择“打开可执行文件”。在“打开可执行文件”对话框中,导航到包含notepad.exe的文件夹(例如,C:\windows\system32)。输入notepad.exe作为“文件名”。单击“打开”。

3、在windbg窗口底部附近的命令行中,输入以下命令:.sympath srv*.
输出:

符号搜索路径告诉windbg在哪里查找符号(pdb)文件。调试器需要符号文件来获取有关代码模块(函数名、变量名等)的信息。
输入此命令,通知windbg执行符号文件的初始查找和加载:.reload
4、查看notepad.exe模块的符号
请输入以下命令:x notepad!*
注意:如果看不到任何输出,请输入.reload。要查看包含main的notepad.exe模块中的符号,请输入以下命令: x notepad!*main*
5、在记事本上设置断点notepad!WinMain,输入以下命令:bu notepad!WinMain
要验证是否设置了断点,请输入以下命令:bl

6、运行,请输入以下命令:g
记事本一直运行到winmain函数,然后中断到调试器。

要查看在记事本进程中加载的代码模块列表,请输入以下命令:lm

要查看堆栈跟踪,请输入以下命令:k

7、再次运行 g
8、要中断记事本执行,请从“调试”菜单中选择“中断”。
9、观察保存过程,要在zwwritefile处设置和验证断点,请输入以下命令:

10、输入g重新开始运行记事本。在记事本窗口中,输入一些文本,然后从“文件”菜单中选择“保存”。当涉及zwCreateFile时,正在运行的代码将中断。输入k以查看堆栈跟踪。


用Windbg调试自己的程序
void MyFunction(long p1, long p2, long p3)
{
long x = p1 + p2 + p3;
long y = 0;
y = x / p2;
} void main ()
{
long a = 2;
long b = 0;
MyFunction(a, b, 5);
}
对于本练习,我们假设构建的应用程序(myapp.exe)和符号文件(myapp.pdb)位于C:\myapp\x64\debug中。我们还将假设应用程序源代码位于C:\myapp\myapp中。
1、打开Windbg
2、在“文件”菜单上,选择“打开可执行文件”。在“打开可执行文件”对话框中,导航到c:\myapp\x64\debug。输入myapp.exe作为“文件名”。单击“打开”。
3、输入下面的命令:
.sympath+ C:\MyApp\x64\Debug
现在,windbg知道在哪里可以找到应用程序的符号和源代码。
4、输入下面的命令:
5、在“调试”菜单上,选择“单步执行”(或按F11)。继续单步执行,直到进入MyFunction。当您单步执行y=x/p2行时,应用程序将崩溃并进入调试器。输出与此类似:
使用WinDbg调试入门(用户模式)的更多相关文章
- 使用WinDbg调试入门(内核模式)
windbg是一个内核模式和用户模式调试器,包含在Windows调试工具中.这里我们提供了一些实践练习,可以帮助您开始使用windbg作为内核模式调试器. 设置内核模式调试 内核模式调试环境通常有两台 ...
- .NET高级调试系列-Windbg调试入门篇
Windbg是.NET高级调试领域中不可或缺的一个工具和利器,也是日常我们分析解决问题的必备.准备近期写2篇精华文章,集中给大家分享一下如果通过Windbg进行.NET高级调试. 今天我们来一篇入门的 ...
- WinDbg调试DMP格式文件
前言:WinDbg是微软开发的免费源代码级的调试工具.WinDbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件.本文的讨论是在安装了Debugging Tools for Win ...
- 使用Windbg调试内核
Windbg是微软开发的免费源码级调试工具.Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件. 1.从http://www.microsoft.com/whdc/devt ...
- 使用WinDbg调试SQL Server——入门
这篇文章我想探究下SQL Server里完全不同的领域:如果使用WinDbg(来自针对Windows的调试工具)调试SQL Server.在我们进入枯涩细节之前,我想详细解释下为什么选择这样晦涩的话题 ...
- 使用Visual Studio调试用户模式进程(Debugging a User-Mode Process Using Visual Studio)
由于本人能力有限,翻译不足之处敬请谅解,欢迎批评指正:sunylat@163.com Visual Studio版本:Visual Studio 2015企业版,中文环境. MSDN原文:https: ...
- WinDbg调试.NET程序入门
俗话说:万事开头难! 自从来到新公司遇到性能问题后,需要想办法解决这个问题,但是一直没有合适的性能分析工具,然后找到StevenChennet 大神帮忙,他用WinDbg工具远程帮我分析了一个 dum ...
- 【旧文章搬运】Windbg+Vmware驱动调试入门(三)---Windbg基本调试入门
原文发表于百度空间,2009-01-09========================================================================== 这一节的内 ...
- 【旧文章搬运】Windbg+Vmware驱动调试入门(一)---Windbg的设置
原文发表于百度空间,2009-01-08========================================================================== Windb ...
随机推荐
- 【实战经验】--Xilinx--IPcore--PLL生成
用途: PLL用于产生自己想要的时钟,可以倍频有可以分频,通常倍频. 生成: 1.打开ISE—— Project —— New source,选择IP(CORE Generator & Arc ...
- Go操作ini文件
除了采用json,yaml等格式之外,常用的配置文件还有ini格式的. cfg, err := ini.Load(fyPath + "\\ServerSystem.ini") // ...
- golang ---常用函数:make
简介 内建函数 make 用来为 slice,map 或 chan 类型分配内存和初始化一个对象(注意:只能用在这三种类型上) slice // 长度为5,容量为10的slice,slice中的元素是 ...
- 2019-07-22 phpStudy配置虚拟主机
1.右击 phpStudy ->[打开配置文件]->[vhosts-conf]: 2.在里面加入如下代码,并保存: NameVirtualHost *:80 <VirtualHost ...
- EVM靶机渗透
前言 靶机下载地址: https://download.vulnhub.com/norzhctf/Basilic.ova 通过渗透靶机来学习相关知识以便提高在真实环境的渗透能力 ==. 安装: 我是用 ...
- thrift java first demo
参考文档:http://thrift.apache.org/ 1.下载需要的文件 地址:http://thrift.apache.org/download 需要下载 thrift-0.12.0.ta ...
- 在windows上搭建hadoop开发环境
下载hadoop: http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common 点击下面链接进行下载 然后进行解压 如果解压出现下面的情况 则用管 ...
- mysql高级用法(1)- mariadb的主从搭建
Mariadb介绍: mariadb是mysql的一个分支,需要进一步了解的参考:https://mariadb.org/ 安装参考教程:window版安装:Mariadb 介绍 1 (安装) lin ...
- selenium窗口句柄以及对话框处理
多窗口.句柄: 1.获取当前句柄:driver.current_window_handle 2.获取所有句柄:driver.window_handles 3.切换句柄:driver.switch_to ...
- 计算机网络基础之IP地址详解
计算机网络基础之IP地址详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.IP地址概述 1>.什么是IP地址 我们为什么要使用逻辑地址(IP地址)来标识网络设备,而不采 ...
