当前位置:网站首页>WinDbg实践--入门篇
WinDbg实践--入门篇
2022-07-30 21:14:00 【阿升1990】
WinDbg从字面意思就是Windows+Debug的组合,即Windows平台上的调试工具,可以调试用户模式、内核模式、dump文件等,总之知道它的调试功能非常强大就行了。WinDbg调试命令分为3种,分别是基本命令、元命令和扩展命令。基本命令和元命令是调试器自带的,元命令总以".“开头,而扩展命令总以”!"开头。后面的系列主要是通过例子+命令来实践WinDbg。
一.配置微软符号服务器[没能成功]
WinDbg在Windows程序中,通常都有一个和XXX.exe相同名字的XXX.pdb,pdb的全拼是Program Debug Database。pdb有自身的文件格式,它主要包含了调试信息,该文件是由链接器生成的符号文件。符号服务器[Symbol Server]本质上就是一个文件服务器,它把要调试的符号进行了集中存储,这样只要把WinDbg指向符号服务器就可以解析符号名称了。常用的公共符号服务器就是微软的符号服务器了,即http://msdl.microsoft.com/download/symbols,这个是调试Windows应用程序和Windows内核程序必不可少的。当然也可以搭建自己的符号服务器。
1.WinDbg默认的设置路径
File -> Settings -> Debugging settings,默认的源码路径、符号路径和缓存路径如下:
2.设置_NT_SYMBOL_PATH环境变量
设置_NT_SYMBOL_PATH环境变量的值为SRV*D:\mysymbol*https://msdl.microsoft.com/download/symbols
:
在WinDbg中执行命令!sym noisy[显示详细加载信息]和.reload /f[加载符号]如下:
通过上图一看就是网络连接的问题。文章[6]讲要设置下proxy才行,设置_NT_SYMBOL_PROXY环境变量的值为127.0.0.1:19180:
按照操作proxy也设置和打开了,执行.reload /f命令依然原样报错,并且网上没有找到解决方案。打开https://msdl.microsoft.com/download/symbols提示如下:
说明:总之没有能够从微软的符号服务器下载数据,并且网上没有找到有效的解决方案。由于暂时也用不到这个,就先这样告一段落,有知情的小伙伴可以分享下解决方案。
二.WinDbg常用的命令
1.命令.cls
输入.cls清空Command窗口中的内容:
2.命令version
使用version命令查看版本信息:
3.命令vertarget
使用vertarget命令查看目标计算机版本信息:
4.命令lm
使用lm查看模块信息:
主要显示模块名称,模块开始地址,模块结束地址,模块路径等信息。
5.命令!dlls
使用!dlls命令查看模块信息:
6.命令.process
使用.process显示当前进程信息:
7.命令.thread
使用.thread显示当前线程信息:
8.命令!peb
使用!peb命令显示进程环境块信息:
9.命令!teb
使用!teb命令显示线程环境块信息:
10.命令!address -summary
使用!address -summary命令显示内容地址摘要信息:
11.命令.sympath
使用.sympath查看当前符号搜索路径等信息:
三.使用WinDbg打开notepad.exe
WinDbg开启调试的方式有很多种,这里使用打开可执行文件的方式:
使用WinDbg打开notepad.exe后,Command窗口显示内容如下:
主要显示Windows Debugger版本,执行性文件路径,符号搜索路径等信息。
四…NET探秘:MSIL权威指南
今天推荐的一本好书和老书是《.NET探秘:MSIL权威指南》,这本书以.NET2.0为基础,是讲解MSIL的权威著作,感兴趣的小伙伴可以下载[12]。后面要把WinDbg操作和MSIL实践融入到日常的.NET软件开发中,以提高软件的安全性。
参考文献:
[1]WinDbg用户态调试教程:https://bbs.pediy.com/thread-34379.htm
[2]Windbg新手入坑指南:https://www.52pojie.cn/thread-924116-1-1.html
[3]Windbg调试命令详解:http://yiiyee.cn/blog/2013/08/23/windbg/
[4]WinDbg用法详解:https://wenku.baidu.com/view/ca16ec6a306c1eb91a37f111f18583d049640fdc.html
[5]Good tutorial for WinDbg:https://stackoverflow.com/questions/4946685/good-tutorial-for-windbg
[6]WinDbg设置调试符号路径与调试符号下载:https://blog.csdn.net/qq_41252520/article/details/123095105
[7]dotnet/symreader-portable:https://github.com/dotnet/symreader-portable
[8]搭建自己的符号服务器:https://bbs.pediy.com/thread-262537.htm
[9]Windows调试工具:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/
[10]WinDbg Online Help:http://www.dbgtech.net/windbghelp/index.html
[11]WinDbg官方文档:http://www.windbg.org/
[12].NET探秘:MSIL权威指南:https://url39.ctfile.com/f/2501739-623685565-48209f?p=2096 (访问密码: 2096)
本文由mdnice多平台发布
边栏推荐
猜你喜欢
Teach you how to build a permanently running personal server
mysql deadlock
nVisual网络可视化管理平台功能和价值点
7、MySQL Workbench 导出导入数据库
ENS 表情包域名火了!是炒作还是机遇?
JSESSIONID description in cookie
转义字符笔记记录
7.联合索引(最左前缀原则)
Why do so many people who teach themselves software testing give up later...
QUALITY-GATED CONVOLUTIONAL LSTM FOR ENHANCING COMPRESSED VIDEO
随机推荐
走进Redis,让你重新认识redis。绝不是表面
Quick Master QML Chapter 6 Animation
三层架构简单配置
QUALITY-GATED CONVOLUTIONAL LSTM FOR ENHANCING COMPRESSED VIDEO
微信读书,导出笔记
LeetCode · 23. Merge K ascending linked lists · recursion · iteration
导航栏----个人中心 Dropdown
Cookie中的JSESSIONID说明
mysql deadlock
Apache DolphinScheduler新一代分布式工作流任务调度平台实战-
牛客网——业务分析-提取值
go慢速入门——函数
Google Earth Engine ——ee.List.sequence函数的使用
[Deep Learning] Target Detection | SSD Principle and Implementation
C language: detailed explanation of operators
一个网络两种用途!南开&哈工程提出TINet,通过细化纹理和边缘,在显著性目标检测和伪装目标检测上实现双SOTA!...
2022-07-29 mysql/stonedb慢SQL-Q17-分析
MySQL 删除表数据,重置自增 id 为 0 的两个方式
C语言中指针没那么难~(2)【文章结尾有资料】
JDBC (detailed explanation)