windbg 调试学习

article/2025/10/6 19:41:55

符号服务器地址

微软的公共符号服务器地址:Symbol information

五种符号加载状态

1. deferred: 延迟加载,现在还不需要使用这个模块的符号,将在后面需要的时候加载

2. no symbols: 没有找到相应的符号文件

3. export: 没有找到symbols,但是可以使用导出接口作为符号

4. public: 一般指使用服务器上的共有符号

5. private: 一般指使用本地的私有符号

符号相关的命令

1. 设置符号加载路径,`d:\symbolslocal`是符号服务器的缓存地址;`D:\my_private_symbols_path`是我们自己代码的符号地址

# 下面的命令一共分为两部分
# ;分号前的一部分指定了微软符号服务器的网络地址和缓存地址
# 后面一部分是我们自己的模块的pdb的地址
.sympath srv*d:\symbolslocal*http://msdl.microsoft.com/download/symbols;D:\my_private_symbols_path

2. 增加符号加载路径

.sympath+ d:\localSymbols

3. 列出已经设置的符号加载路径

.sympath

4. 加载符号

.reload /f

5. 检查某一个模块的符号是否成功加载

!chksym ntdll.dll

6. 单独加载某一个模块的符号

.reload /f ntdll.dll

7. 查看所有模块的符号加载情况

lm

8. 公共符号路径写错了或者忘记了微软符号服务器的地址可以使用下面的命令

.symfix

注意:

访问微软的符号服务器可能需要梯子,注意用梯子的方式,要使用全局模式。

9. 查看某一帧的局部变量

# 帧号一般是从01开始的
.frame 16进制的帧号    #切换到某一帧
.dv                   #查看当前帧的局部变量

10. 忽略二进制文件和pdb的时间差异

.symopt + 0x40

11. 查看模块的符号

# 从某一个模块中查找某一个符号
x notepad!func1# 可以使用通配符
x notepad!Get*# 没有导出的符号不能使用通配符,一般被优化了,我们也找不到符号# vs2017 编译出来的debug版本,使用x命令的通配符模式无效,原因不明
# 可以选择使用源码来调试
# 也可以自己补全符号名  bu MyKernel64!FileSys::My_Z_NtWriteFile

12. 查看程序入口

# 正则匹配main
x notepad!*main*

13. 知道符号之后我们就可以加断点了

# 对某一个模块的某一个符号下断点
# bu 模块名!符号名   
bu notepad!GetName    # GetName 是我瞎写的名字

14. 在源代码上设置断点

bp `myDLL!mySourceFile.cpp:XXX` 

15. 反汇编

u HelloDDK!__security_init_cookie+0x1b

16. 查看内存地址

d 95745000

17. 程序运行时,自动加载windbg

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\my_test_1.exe]
"Debugger"="C:\\Program Files (x86)\\Windows Kits\\10\\Debuggers\\x64\\windbg.exe"

18. 源码加断点,先打开源码,再执行下面的命令:

bp `ConsoleApplication12.cpp:12`

 19. 条件断点

#include <iostream>int sum(int a,int b,int c){int v = a*10 +b%10+c;return v;
}int main()
{sum(1,2,3);sum(4,5,6);sum(7,8,9);getchar();return 0;
}
// 当第二个参数是5的时候会被断下来
bp tianjian!sum ".if(poi(esp+8)==5){.printf \"EM_GETTEXTRANGE\n\"} .else {gc}"

查看一个模块中所有函数的名称和地址

x ntdll!*
# 如果ntdll加载了符号可以看到参数信息,如果没有加载符号看不到参数信息
# 我们这里加载了符号

windbg中和dd,dt类似的命令还有哪些?

在Windbg调试器中,除了 dd(Dump Dword)和 dt(Dump Type)命令之外,还有一些其他类似的命令可以用于查看和分析内存和数据类型。以下是一些常用的命令:

  1. db(Dump Byte):以字节为单位显示指定内存地址的内容。
  2. dw(Dump Word):以字(2 字节)为单位显示指定内存地址的内容。
  3. du(Dump Unicode String):以 Unicode 字符串形式显示指定内存地址的内容。
  4. da(Dump Ansi String):以 ANSI 字符串形式显示指定内存地址的内容。
  5. dq(Dump Quadword):以 8 字节为单位显示指定内存地址的内容。
  6. dp(Dump Pointer):以指针的形式显示指定内存地址的内容。
  7. dv(Dump Verbose):以详细的格式显示指定类型的变量的内容。
  8. dps(Dump Pointer Sized Value):以指针大小的值显示指定内存地址的内容。
  9. dpp(Dump Physical Page):显示指定物理页面的内容。
  10. dtc(Dump Type Configurations):显示调试器中已加载的类型信息的配置。

这些命令可以帮助调试人员在 Windbg 中查看内存内容、字符串、变量等不同类型的数据,从而进行调试和分析。请注意,这只是其中的一些常用命令,Windbg 提供了丰富的调试命令集,可以根据具体的需求和场景选择合适的命令。

常见调试

1. 注入一个dll后导致程序启动失败

1.1 崩溃现场:

jne跳转到两条指令中间,也就是跳转的地址不对

 查看参数,看堆栈每一列的意义

 


http://chatgpt.dhexx.cn/article/caqRwePO.shtml

相关文章

Windbg调试(使用方法)

一、Windbg版本信息 Windbg分32位和64位版本&#xff0c;32位程序应使用32位Windbg调试&#xff0c;64位程序应64位Windbg调试。 若想使用64位的Windbg分析32位的程序, 使用如下命令进行CPU模式的切换&#xff1a; .load wow64exts;!sw//例如&#xff1a; 1.查看线程停在哪里…

Windebug

1、 安装drwtsn32&#xff08;Dr.Watson win7没有了&#xff09; 用户可以通过drwtsn32命令&#xff0c;查看dmp文件会被保存在何处。 2、 安装windbg,Windbg下载地址&#xff1a; http://www.microsoft.com/whdc/devtools/debugging/default.mspx 3、 设置windbg A、符号表路径…

windbg调试分析dump工具,使用windbg分析Qt崩溃原因

目录 windbg下载和安装windbg调试exe可执行文件windbg分析dump文件 在非开发环境&#xff0c;windbg工具可以对.exe可执行文件进行调试&#xff0c;也可以分析dump文件&#xff0c;是release版本运行模式解决bug的神器。 windbg下载和安装 一般在安装windows系统软件时会安装w…

02-windows调试工具(DebugDiag使用)

工具下载地址&#xff1a;https://www.microsoft.com/en-us/download/details.aspx?id49924csdn的下载地址&#xff1a;https://download.csdn.net/download/qq_37103755/87089384DebugDiag的简介&#xff1a; DebugDiag 工具主要用于帮助解决如挂起、 速度慢、 内存泄漏或内存…

如何使用Debugging Tools for Windows (windebug)简单的使用心得

1.安装debug工具 ​ 下载页面地址&#xff1a;http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx 选择合适的版本安装 ​ 2.安装Symbols&#xff08;特征库&#xff09; 建议可以多安装以免出现分析不出来的情况 ​ 下载地址&#xff1a;http://www.mi…

WinDebug快速使用及调试注意事项

参考文献&#xff1a; http://www.cnblogs.com/killmyday/archive/2010/03/14/1685331.html WinDbg是微软发布的一款强大的源码级调试工具&#xff0c;支持用户态和内核态两种模式的调试&#xff0c;支持Dump文件分析、内存泄露诊断、同时支持跨机器远程附加进程调试。在具体…

Windows下调试工具Windbg入门

前言 Windbg简单来说就是一个Windows下对用户态/内核态的程序进行调试&#xff0c;以及对Core Dump文件的分析。对于Crash&#xff0c;资源泄露&#xff0c;死锁等问题的分析&#xff0c;Windbg是一个强有力的利器。 一、下载 微软官网提供的Windbg为windows10版本&#xff…

这可能是最详细的 Windows Debug 详解 了

Debug概览 Debug是什么&#xff1f; debug是Windows 16位或者32位机器上的一款调试工具。也就是说&#xff0c;在WindowsXP及以前的机器上都有debug&#xff0c;直接WinX debug就可以调出&#xff1b;在之后的32位机也有&#xff1b;但是在之后的64位机器上不存在&#xff0c…

Debugging Tools for Windows (WinDbg)的使用

安装 可能大家安装时&#xff0c;直接从外部的网址下载或者拷贝&#xff0c;一般这也是可行的&#xff0c;只不过可能安装的不是最新版本&#xff0c;或者找不到和自己当前系统匹配的版本&#xff0c;所以最简单的方法还是去微软的官网下载 下载地址: Download Debugging tool…

Windows调试工具入门 — windebug

一、 引子 Debugging Tools for Windows是微软发布的一套用于软件调试的工具包(后面如果没有指明&#xff0c;那么我会使用WinDbg来作为这一套调试工具的简称)。我第一次接触是在三年前的一个内核驱动项目&#xff0c;由于进行了IDT中键盘鼠标中断的Hook&#xff0c;使用Softi…

Windebug专题

5 解决问题案例 !cs、~~[TID]&#xff08;经典死锁&#xff09; 随手写的&#xff1a; #include <windows.h > CRITICAL_SECTION cs1; CRITICAL_SECTION cs2; DWORD __stdcall thread1(LPVOID lp) { EnterCriticalSection(&cs1); Sleep(10); EnterCriticalSection(…

winDebug 调试

1.背景 最近由于线上的程序发生了死锁&#xff0c;而且重现的概率很低&#xff0c;正好客户反馈一个任务超时了&#xff0c;登上线上环境发现有一个“僵尸”进程&#xff0c;占用内存不波动&#xff0c;cpu仍在占用&#xff0c; 那么用创建转储文件&#xff0c;用windbg调试吧…

ZedGraph类库之基本教程---PieSampleDemo.cs(画饼)

ZedGraph类库之基本教程 PieSampleDemo.cs介绍 这节我把饼形图粗略的介绍一下&#xff0c;如下图。 PieSampleDemo.cs&#xff08;画饼&#xff09; using System; using System.Drawing; using System.Collections; using ZedGraph; namespace ZedGraph.Demo { ///<sum…

Winforn中设置ZedGraph曲线图的属性、坐标轴属性、刻度属性

场景 C#窗体应用中使用ZedGraph曲线插件绘制图表&#xff1a; https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99716066 在上面已经实现基本的曲线图之后&#xff0c;效果如下&#xff1a; 当然这不是我们的效果&#xff0c;还要对其属性进行设置。 但是毕竟其…

转载:ZedGraph使用帮助

译文&#xff1a; 序言 ZedGraph是用于创建任意数据的二维线型、条型、饼型图表的一个类库&#xff0c;也可以作为Windows窗体用户控件和ASP网页控件&#xff08;这里有个web-accessible 不知道该怎么翻译&#xff09;。这个类库具有高度的适应性&#xff0c;几乎所有式样的图…

ZedGraph如何去掉外边框?并设置背景颜色

ZedGraph的在显示曲线图的时候&#xff0c;有外边框一直在显示&#xff0c;会显得特别碍眼&#xff0c;如何去掉它呢&#xff1f; 这个是原始的现象 1 去掉外边框的做法如下&#xff1a; //去掉外边框this.zedGraph.GraphPane.Border.IsVisible false;2 设置一下背景颜色 //设…

用ZedGraph控件画统计分析图.

由于朋友需要把C1WebChart.替换掉,改用开源的ZedGraph控件.以下做一个示例,供大家参考: 步骤如下: 1、添加ZedGraph控件。如下图&#xff1a; 2、添加到控制面版。如下图&#xff1a; 3、制作用户控件。 a> 建立一个命名为&#xff1a; DrawGrap.ascx 用户控件。 b…

C# 利用ZedGraph控件画简单折线图示例

下载ZedGraph 官网下载地址 http://sourceforge.net/projects/zedgraph/files/ 添加 ZedGraph.dll 和ZedGraph.Web.dll的引用 在控件库中添加ZedGraph控件 右键点击工具箱 - 选择项 - .Net Framework 组件 - 浏览 - 找到ZedGraph.dll 和ZedGraph.Web.dll添加…

zed graph使用经验

转自&#xff1a;http://www.cnblogs.com/gaizai/archive/2010/02/22/1671154.html ZedGraph使用经验 开源的统计图控件中基本常用的是OpenFlashChar和ZedGraph&#xff0c;今天就先来讲讲ZedGraph的使用。 ZedGraph资源 ZedGraph来源&#xff1a;http://sourceforge.net/proj…

ZedGraph

ZedGraph使用经验 2010-02-22 14:28 by 听风吹雨, 8194 阅读, 3 评论, 收藏, 编辑 开源的统计图控件中基本常用的是OpenFlashChar和ZedGraph&#xff0c;今天就先来讲讲ZedGraph的使用。 ZedGraph资源 ZedGraph来源&#xff1a;http://sourceforge.net/project/showfiles.php…