WinDbg扩展
WinDbg的扩展,也可以叫插件。它用于实现针对特定调试目标的调试功能,用于扩展某一方面的调试功能。扩展的实现是通过扩展模块(DLL)实现的。Windbg本身已经包含了很多扩展命令,这些扩展为这Windbg调试器提供了强大的功能和灵活性。调试器扩展命令的使用与标准调试器命令非常相似。但是,虽然内置调试程序命令本身是调试程序二进制文件的一部分,但调试程序扩展命令是由与调试程序不同的DLL公开的。windbg可以添加扩展功能,用户可以自己实现一组功能并添加到windbg中,把包含扩展功能的dll文件放到windbg目录下的winext子目录 ,windbg就会自动加载扩展模块。这允许您编写新的调试器命令,这些命令是根据您的特定需求定制的。
加载调试器扩展DLL
有几种方法可以加载调试器扩展DLL,以及控制默认调试器扩展DLL和默认调试器扩展路径:
- 在启动调试程序之前,使用\u nt \u debugger \u extension \u path环境变量设置扩展DLL的默认路径。这可以是多个目录路径,用分号分隔。
- 使用.load(加载扩展dll)命令加载新的dll。
- 使用.unload(卸载扩展dll)命令卸载dll。
- 使用.unload all(卸载所有扩展DLL)命令卸载所有调试器扩展。
- 启动调试器之前,使用-a命令行选项设置默认扩展dll。
- 使用.extpath(设置扩展路径)命令设置扩展dll搜索路径。
- 使用.set dll(设置默认扩展dll)命令设置默认扩展dll。
- 使用.chain(list debugger extensions)命令以默认搜索顺序显示所有加载的调试器扩展模块。
- winxp目录包含可用于Windows XP和更高版本的Windows的扩展。

- winext目录包含可与任何版本的Windows一起使用的扩展。dbghelp.dll模块位于Windows调试工具的基本目录中,也包含此类型的扩展。

如果编写自己的调试器扩展,则可以将它们放在任何目录中。但是,建议您将它们放在新目录中,并将该目录添加到调试器扩展路径中。最多可以加载32个扩展DLL。
使用调试器扩展命令
调试器扩展命令的使用与调试器命令的使用非常相似。该命令在调试器命令窗口中键入,在该窗口中生成输出,或者在目标应用程序或目标计算机中生成更改。实际的调试器扩展命令是调试器调用的DLL中的入口点。
![module.]extension [arguments]
模块名后面不应跟.dll文件扩展名。如果模块包含完整路径,则默认字符串大小限制为255个字符。如果模块尚未加载,则将使用对LoadLibrary(模块)的调用将其加载到调试器中。调试器加载扩展库后,调用getprocAddress函数在扩展模块中查找扩展名。扩展名区分大小写,输入时必须与扩展模块的.def文件中显示的完全一致。如果找到扩展地址,则调用该扩展。
- 在所有操作系统和两种模式下工作的扩展模块:dbghelp.dll和winext\ext.dll。
- 可在所有模式下工作但特定于操作系统的扩展模块。对于Windows XP和更高版本的Windows,这是winxp\exts.dll。Windows 2000没有相应的模块。
- 与所有操作系统一起工作但特定模式的扩展模块。对于内核模式,这是winext\kext.dll。对于用户模式,这是winext\uext.dll。
- 操作系统特定和模式特定的扩展模块。下表指定了此模块。
Windows Build User Mode Kernel Mode Windows 2000 (free build)
w2kfre \ ntsdexts.dll
w2kfre \ kdextx86.dll
Windows 2000 (checked build)
w2kchk \ ntsdexts.dll
w2kchk \ kdextx86.dll
Windows XP and later
winxp \ ntsdexts.dll
winxp \ kdexts.dll
编写新的调试器扩展
- dbgeng扩展。这些是基于dbgeng.h头文件和wdbgexts.h头文件中的原型。
- WDBGexts扩展。这些都是基于wdbgexts.h头文件中的原型。
WinDbg扩展的更多相关文章
- 【逆向知识】开发WinDBG扩展DLL
如何开发WinDbg扩展DLL WinDbg扩展DLL是一组导出的回调函数,用于实现用户定义的命令.以便从内存转储中提取特定的信息.扩展dll由调试器引擎加载,可以在执行用户模式或内核模式调试时提供自 ...
- 如何查看WinDbg扩展有哪些命令
如果您想查看任何windbg扩展所支持的命令,可以采用各种方法. 你可以用!<ext_name>.help命令查看该扩展支持的所有命令.用扩展模块名替换<ext_name>.( ...
- Windbg扩展的一些参考文章
Windbg脚本和扩展工具开篇http://www.cnblogs.com/pugang/archive/2012/11/30/2796617.html WinDbg简单扩展DLL http://ww ...
- Windbg脚本和扩展工具开篇
好长一段时间没写文章了,最近一直忙于为项目的可调式性做一些脚本和扩展工具,鉴于对windbg强大威力的震撼,以及相对较少的资料,笔者决定写一系列关于如何开发Windbg脚本和扩展命令的文章,您的支持是 ...
- .Net Memory -- Windbg基本命令
命令 解释 .cls 清空命令窗口屏幕 .load dllfullpath 加载debugger扩展dll如SOS sosex psscor. .loadby dll moduleName 加载deb ...
- SEH分析笔记(X64篇)
SEH分析笔记(X64篇) v1.0.0 boxcounter 历史: v1.0.0, 2011-11-4:最初版本. [不介意转载,但请注明出处 www.boxcounter.com 附件里有本文 ...
- IDT系列:(一)初探IDT,Interrupt Descriptor Table,中断描述符表
原文: IDT系列:(一)初探IDT,Interrupt Descriptor Table,中断描述符表 IDT,Interrupt Descriptor Table,中断描述符表是CPU用来处理中 ...
- WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDb ...
- WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手册
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部曲:(一)WinDbg 命令手册> <WinDb ...
随机推荐
- 用LabVIEW做声源定位系统
前一阵子,研发部举办了为期三天的第一届Innovation Day,让大家用3天时间去完成工作之外的一些创意.有人做微信小程序,有人继续研究一些工作中用到的Tool,有人把一直想解决而没时间解决的老b ...
- AJAX调用数据,滚动到底部
最近一个小项目里面,需要使用AJAX去拉取数据,并且直接显示最后一条信息,也就是滚动到底部.实现脚本如下: var scrollHeight = $('.txtBox3').prop("sc ...
- SpringBootServletInitializer报错
1. 现象 从Springboot 1.5.1.RELEASE 升级到Springboot 2.1.2.RELEASE 后SpringBootServletInitializer报错. 2.解决方法 ...
- C# vb .net实现轮廓特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的轮廓特效呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第一步 ...
- 2019 龙采科技java面试笔试题 (含面试题解析)
本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.龙采科技等公司offer,岗位是Java后端开发,最终选择去了龙采科技. 面试了很多家公司,感觉大部分公司考察的点 ...
- 【转载】C#中Convert.ToDouble方法将字符串转换为double类型
在C#编程过程中,可以使用Convert.ToDouble方法将字符串或者其他可转换为数字的对象变量转换为double类型,Convert.ToDouble方法有多个重载方法,最常使用的一个方法将字符 ...
- 【转载】C#中List集合使用Min()方法查找到最小值
在C#的List集合操作中,有时候需要查找到List集合中的最小值,此时可以使用List集合的扩展方法Min方法,Min方法有2种形式,一种是不带任何参数的形式,适用于一些值类型变量的List集合,另 ...
- 解决vue-cli项目开发中跨域问题
一.开发环境中跨域 使用 Vue-cli 创建的项目,开发地址是 localhost:8080,需要访问非本机上的接口http://10.1.0.34:8000/queryRole.不同域名之间的访问 ...
- Maven打包时集成依赖项或复制依赖项到指定目录
1.集成依赖项,最后生成的jar文件包含所有依赖: <build> <plugins> <plugin> <artifactId>maven-assem ...
- C#中多集合组合实现
C#中多集合组合使用方法,主要用到 Enumerable.Join方法 var skuInfoList = new Dictionary<int, List<long>>(); ...