2019年9月21日

C++ EH Exception(0xe06d7363)---捕获过程

摘要: 书接上文《C++ EH Exception(0xe06d7363) 抛出过程》,下面我们讲下,VC++是如何catch到异常且处理的。 我们知道,在VC++里,C++异常实现的底层机制还是SEH,所以,我们将程序跑起来观察 上图红框框起来的部分就是编译器安装了异常处理链,且将其设置位最后一个节点,也 阅读全文

posted @ 2019-09-21 14:30 活着的虫子 阅读(2757) 评论(0) 推荐(0) 编辑

2019年9月20日

WinDbg常用命令系列---反汇编u*

摘要: u, ub, uu (Unassemble) u*命令显示内存中指定程序代码的汇编转换。不要将此命令与~u(解冻线程)命令混淆。 参数: Range指定包含要反汇编的指令的内存范围。如果使用b标志,则必须使用“address llength”语法而不是“address1 address2”语法指定范 阅读全文

posted @ 2019-09-20 16:26 活着的虫子 阅读(4295) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---输入内存值的命令e*

摘要: e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza (Enter Values) e*命令将您指定的值输入内存。不要将此命令与~e(Thread-Specific Command)限定符混淆。 参数: Address指定输入值的起始地址。调试器将替换地址和每个后续内 阅读全文

posted @ 2019-09-20 15:39 活着的虫子 阅读(2454) 评论(0) 推荐(0) 编辑

2019年9月18日

C++ EH Exception(0xe06d7363)----抛出过程

摘要: C++ EH Exception是Windows系统VC++里对c++语言的throw的分类和定义,它的代码就是0xe06d7363。在VC++里其本质也是SEH结构化异常机制。在我们分析用户崩溃的例子中经常会遇到它。一般情况下,遇到它,是我们代码里用throw抛出异常后没有处理导致程序崩溃。下面分 阅读全文

posted @ 2019-09-18 16:43 活着的虫子 阅读(9213) 评论(3) 推荐(1) 编辑

2019年9月17日

WinDbg常用命令系列---异常相关操作

摘要: .exr (Display Exception Record) .exr命令显示异常记录的内容。 .exr Address .exr -1 参数: Address指定异常记录的地址。如果指定-1作为地址,调试器将显示最新的异常。 环境: 模式 用户模式下,内核模式 目标 实时、 崩溃转储 平台 全部 阅读全文

posted @ 2019-09-17 14:59 活着的虫子 阅读(3466) 评论(0) 推荐(0) 编辑

2019年9月12日

记程序失去响应随后闪退的问题

该文被密码保护。 阅读全文

posted @ 2019-09-12 16:31 活着的虫子 阅读(0) 评论(0) 推荐(0) 编辑

2019年9月11日

Windows异常分发函数---KiUserExceptionDispatcher

摘要: 简介 KiUserExceptionDispatcher 是SEH分发器的用户模式的负责函数。当一个异常发生的时候,该异常将生成一个异常事件,内核检查该异常是否是由于执行用户模式代码导致的。如果是这样的话,内核修改栈上的trap frame,因此当内核从中断或者异常返回的时候,线程将从KiUserE 阅读全文

posted @ 2019-09-11 14:13 活着的虫子 阅读(5944) 评论(0) 推荐(0) 编辑

2019年9月10日

WinDbg常用命令系列---!analyze

摘要: !analyze命令简介 这个!analyze扩展显示有关当前异常或错误检查的信息。 用户模式: !analyze [-v] [-f | -hang] [-D BucketID] !analyze -c [-load KnownIssuesFile | -unload | -help ] 内核模式: 阅读全文

posted @ 2019-09-10 14:58 活着的虫子 阅读(4936) 评论(0) 推荐(0) 编辑

2019年9月9日

WinDbg常用命令系列---源代码操作相关命令

摘要: lsf, lsf- (Load or Unload Source File) lsf和lsf-命令加载或卸载源文件。 参数: Filename指定要加载或卸载的文件。如果此文件不在从中打开调试器的目录中,则必须包含绝对路径或相对路径。文件名必须遵循Microsoft Windows文件名惯例。 ls 阅读全文

posted @ 2019-09-09 11:37 活着的虫子 阅读(1157) 评论(0) 推荐(0) 编辑

2019年9月7日

记一次"中断点 已到达中断点"的异常

该文被密码保护。 阅读全文

posted @ 2019-09-07 11:29 活着的虫子 阅读(4) 评论(0) 推荐(0) 编辑

记一次内存分配失败的异常调试

该文被密码保护。 阅读全文

posted @ 2019-09-07 10:27 活着的虫子 阅读(1) 评论(0) 推荐(0) 编辑

2019年9月5日

WinDbg常用命令系列---符号相关命令

摘要: ld (Load Symbols) ld命令加载指定模块的符号并更新所有模块信息。 参数: ModuleName指定要加载其符号的模块的名称。modulename可以包含各种通配符和说明符。 /f FileName更改为匹配项选择的名称。默认情况下,模块名是匹配的,但使用/f时,文件名是匹配的,而不 阅读全文

posted @ 2019-09-05 17:45 活着的虫子 阅读(1264) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---显示加载的模块列表lm

摘要: lm (List Loaded Modules) lm命令显示指定的加载模块。输出包括模块的状态和路径。 参数: Options以下选项的任意组合:D 使用调试器标记语言显示输出。o 仅显示加载的模块。l 仅显示其符号信息已加载的模块。v 显示详细信息。 显示所包括的符号文件名称、 图像文件名称、 阅读全文

posted @ 2019-09-05 15:56 活着的虫子 阅读(6577) 评论(0) 推荐(1) 编辑

2019年9月4日

WinDbg常用命令系列---单步执行p*

摘要: p (Step) p命令执行单个指令或源代码行,并可选地显示所有寄存器和标志的结果值。当子例程调用或中断发生时,它们被视为单个步骤。 用户模式: 内核模式: 参数: Thread指定要继续执行的线程。所有其他线程都被冻结。只能在用户模式下指定线程。 r 打开和关闭寄存器和标志的显示。默认情况下,将显 阅读全文

posted @ 2019-09-04 16:32 活着的虫子 阅读(3379) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---显示局部变量dv

摘要: dv (Display Local Variables) dv命令显示当前作用域中所有局部变量的名称和值。 参数: Flags显示其他信息。可以包括以下任何区分大小写的标志:/f <addr>:允许您指定任意函数地址,以便可以查看任何代码的参数和局部变量。它关闭值显示并暗示/v。/f标志必须是最后一 阅读全文

posted @ 2019-09-04 14:08 活着的虫子 阅读(1475) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---显示数据类型dt/dtx

摘要: dt (Display Type) dt命令显示有关局部变量、全局变量或数据类型的信息。这可以显示有关简单数据类型以及结构和联合的信息。 用户模式下: 内核模式下: 参数: Processor指定运行包含所需信息的进程的处理器。只能在内核模式下指定处理器。 DisplayOpts指定下表中给定的一个 阅读全文

posted @ 2019-09-04 11:43 活着的虫子 阅读(3351) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---显示段选择器dg、链接列表dl和字符串ds/dS

摘要: dg (Display Selector) dg命令显示指定选择器的段描述符。 参数: FirstSelector指定要显示的第一个选择器的十六进制选择器值。 LastSelector指定要显示的最后一个选择器的十六进制选择器值。如果省略,则只显示一个选择器。 此命令最多只能显示256个选择器。常用 阅读全文

posted @ 2019-09-04 11:12 活着的虫子 阅读(1460) 评论(0) 推荐(1) 编辑

2019年9月3日

WinDbg常用命令系列---内存数据显示和对应符号显示d*s(dds、dps、dqs)

摘要: 命令dds, dps, dqs显示给定范围内的内存内容。假定该内存是符号表中的一系列地址。相应的符号也会显示出来。 参数: Options指定一个或多个显示选项。可以包括以下任何选项,但不能指示多个/p*选项:/c Width 指定要在显示中使用列的数。 如果省略,默认列数取决于显示类型。 由于这些 阅读全文

posted @ 2019-09-03 16:35 活着的虫子 阅读(1977) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---显示引用的内存(dda、ddp、ddu、dpa、dpp、dpu、dqa、dqp、dqu)

摘要: 命令dda, ddp, ddu, dpa, dpp, dpu, dqa, dqp, 和 dqu在指定位置显示指针,取消对该指针的引用,然后以各种格式显示结果位置的内存。 参数: Options指定一个或多个显示选项。可以包括以下任何选项,但不能指示多个/p*选项:/cWidth 指定要在显示中使用列 阅读全文

posted @ 2019-09-03 16:04 活着的虫子 阅读(1209) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---内存查看d*

摘要: d*命令显示给定范围内的内存内容。 参数: Options指定一个或多个显示选项。可以包括以下任何选项,但不能指示多个/p*选项:/cWidth:指定要在显示中使用的列数。如果省略此选项,则默认列数取决于显示类型。/p:(仅限内核模式)使用物理内存地址进行显示。范围指定的范围将从物理内存而不是虚拟内 阅读全文

posted @ 2019-09-03 14:19 活着的虫子 阅读(2968) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---断点操作b*

摘要: ba (Break on Access) ba命令设置处理器断点(通常称为数据断点,不太准确)。此断点在访问指定内存时触发。 用户模式下 内核模式下 参数: Thread指定断点应用于的线程 ID指定标识断点的可选数字。如果不指定ID,则使用第一个可用的断点编号。您不能在BA和ID号之间添加空格。每 阅读全文

posted @ 2019-09-03 12:00 活着的虫子 阅读(2404) 评论(0) 推荐(0) 编辑

2019年9月2日

WinDbg常用命令系列---线程相关操作~*

摘要: ~ (Thread Status) 波浪符(~)命令显示指定线程或当前进程中所有线程的状态。 参数: Thread指定要显示的线程。如果省略此参数,将显示所有线程。 Thread指定要显示的线程。如果省略此参数,将显示所有线程。 环境: 模式 仅限用户模式 目标 实时、 崩溃转储 平台 全部 可以在 阅读全文

posted @ 2019-09-02 15:06 活着的虫子 阅读(4614) 评论(0) 推荐(1) 编辑

记一一次软件登录后,过一会闪退

该文被密码保护。 阅读全文

posted @ 2019-09-02 11:37 活着的虫子 阅读(4) 评论(0) 推荐(0) 编辑

2019年8月31日

WinDbg常用命令系列---?*

摘要: ? (Command Help) 问号(?)字符显示所有命令和运算符的列表。问号本身显示命令帮助。 环境 模式 用户模式下,内核模式 目标 实时、 崩溃转储 平台 全部 ? (Evaluate Expression) 问号(?)命令计算并显示表达式的值。 参数 Expression指定要计算的表达式 阅读全文

posted @ 2019-08-31 14:38 活着的虫子 阅读(2284) 评论(0) 推荐(0) 编辑

记一次软件闪退的排查过程

该文被密码保护。 阅读全文

posted @ 2019-08-31 10:33 活着的虫子 阅读(1) 评论(0) 推荐(0) 编辑

2019年8月29日

使用WinDbg调试入门(内核模式)

摘要: windbg是一个内核模式和用户模式调试器,包含在Windows调试工具中。这里我们提供了一些实践练习,可以帮助您开始使用windbg作为内核模式调试器。 设置内核模式调试 内核模式调试环境通常有两台计算机:主机和目标计算机。调试器在主机上运行,正在调试的代码在目标计算机上运行。主机和目标通过调试电 阅读全文

posted @ 2019-08-29 12:41 活着的虫子 阅读(4062) 评论(5) 推荐(0) 编辑

通过USB 2.0电缆手动设置内核模式调试

摘要: Windows的调试工具支持通过USB 2.0电缆进行内核调试。本文介绍如何手动设置USB 2.0调试。通过USB 2.0电缆进行调试需要以下硬件: USB 2.0调试电缆。此电缆不是标准USB 2.0电缆,因为它有一个额外的硬件组件,使其与USB2调试设备功能规范兼容。您可以在Internet上搜 阅读全文

posted @ 2019-08-29 12:40 活着的虫子 阅读(971) 评论(0) 推荐(0) 编辑

通过网线手动设置内核模式调试

摘要: Windows的调试工具支持通过以太网进行内核调试。本主题介绍如何手动设置以太网调试。 运行调试器的计算机称为主机,被调试的计算机称为目标计算机。主机必须运行Windows XP或更高版本,目标计算机必须运行Windows 8或更高版本。与其他类型的电缆相比,通过网络进行调试具有以下优点。 主机和目 阅读全文

posted @ 2019-08-29 11:38 活着的虫子 阅读(1299) 评论(0) 推荐(0) 编辑

2019年8月28日

使用WinDbg调试入门(用户模式)

摘要: windbg是一个内核模式和用户模式调试器,包含在Windows调试工具中。在这里,提供个实践练习,帮助我们开始使用windbg作为用户模式调试器。 用WinDbg调试记事本 1、导航到安装目录,然后打开windbg.exe。 2、在“文件”菜单上,选择“打开可执行文件”。在“打开可执行文件”对话框 阅读全文

posted @ 2019-08-28 16:47 活着的虫子 阅读(12504) 评论(16) 推荐(1) 编辑

WinDbg的环境变量

摘要: 有很多的环境变量,主要分为常规环境变量和内核模式环境变量。下面分别列出。 常规环境变量 下表列出了可在用户模式和内核模式调试的环境变量。 _NT_DEBUGGER_EXTENSION_PATH = Path 指定调试器将先搜索扩展 Dll 的路径。 路径可以包含驱动器号后, 接一个冒号 (:)。 用 阅读全文

posted @ 2019-08-28 08:42 活着的虫子 阅读(1137) 评论(0) 推荐(0) 编辑

2019年8月27日

WinDbg命令窗口的使用

摘要: 调试器命令窗口是windbg中的主要调试信息窗口。可以在此窗口中输入调试程序命令并查看命令输出。Windbg的命令窗口是我们进行调试时,主要打交道的窗口。界面如下 对于windbg,“调试器命令窗口”是指标题栏中标记为“命令”的窗口。此窗口包含两个窗格: 在底部的小窗格中,输入命令。 在上面的大窗格 阅读全文

posted @ 2019-08-27 18:01 活着的虫子 阅读(1930) 评论(0) 推荐(0) 编辑

WinDbg扩展

摘要: WinDbg的扩展,也可以叫插件。它用于实现针对特定调试目标的调试功能,用于扩展某一方面的调试功能。扩展的实现是通过扩展模块(DLL)实现的。Windbg本身已经包含了很多扩展命令,这些扩展为这Windbg调试器提供了强大的功能和灵活性。调试器扩展命令的使用与标准调试器命令非常相似。但是,虽然内置调 阅读全文

posted @ 2019-08-27 16:24 活着的虫子 阅读(1821) 评论(0) 推荐(0) 编辑

Windbg命令脚本流程控制语句详解

摘要: 在Windbg命令脚本一文里,我们介绍了命令脚本语言的的组成要素,在本文里将对语句进行展开的讲解。这些语句主要是流程控制的语句,比如我们常见的条件分子和循环语句等。 ; (命令分隔符) 分号(;)字符用于在一行中分隔多个命令。 参数 命令1,命令2,… 要执行的命令。 命令从左到右依次执行。除非另有 阅读全文

posted @ 2019-08-27 11:22 活着的虫子 阅读(869) 评论(0) 推荐(0) 编辑

2019年8月26日

Windbg命令脚本

摘要: 命令脚本,就是将完成某个特定任务的相关命令组合在一起,保存在脚本文件里,加载到Windbg里执行,达到我们的目的。你可以理解为脚本就是一种语言,就像c或者汇编,但是他不需要编译器将其编译为可执行文件,而是由解释器将其内容翻译为对应的动作。而Windbg的脚本就是利用Windbg作为解释器,将脚本内容 阅读全文

posted @ 2019-08-26 17:13 活着的虫子 阅读(2275) 评论(0) 推荐(1) 编辑

Windbg命令的语法规则系列(三)

摘要: 五、源文件行语法 可以将源文件行号指定为MASM表达式的全部或部分。这些数字计算出与该源代码行对应的可执行代码的偏移量。不能使用源代码行作为C++表达式的一部分。必须用重音符(`)将源文件和行号表达式括起来。以下示例显示源文件行号的完整格式。 如果有多个文件具有相同的文件名,则文件名应包括整个目录路 阅读全文

posted @ 2019-08-26 15:33 活着的虫子 阅读(506) 评论(0) 推荐(0) 编辑

Windbg命令的语法规则系列(二)

摘要: 二、字符串通配符语法 一些调试器命令具有接受各种通配符的字符串参数。这些类型的参数支持以下语法功能: 星号(*)表示零个或多个字符。 问号(?)表示任何单个字符。 包含字符列表的括号([])表示列表中的任何单个字符。列表中只有一个字符匹配。在这些括号中,可以使用连字符(-)指定范围。例如,prog[ 阅读全文

posted @ 2019-08-26 11:54 活着的虫子 阅读(745) 评论(0) 推荐(0) 编辑

Windbg命令的语法规则系列(一)

摘要: 本文介绍使用调试器命令必须遵循的语法规则。使用Windbg调试时,应遵守以下一般语法规则: 您可以在命令和参数中使用大小写字母的任意组合,除非在本节的主题中特别指出。 可以用一个或多个空格或逗号(,)分隔多个命令参数。 通常可以省略命令与其第一个参数之间的空格。如果这种省略不会造成任何歧义,则可以经 阅读全文

posted @ 2019-08-26 11:06 活着的虫子 阅读(1568) 评论(0) 推荐(0) 编辑

2019年8月23日

使用 DML 自定义调试器输出

摘要: 调试器标记语言 (DML) 提供了一种机制增强来自调试器和扩展的输出。 与 HTML 类似,调试器的标记支持允许将输出包括显示指令和额外非显示的标记窗体中的信息。 调试器用户界面,WinDbg 等中分析出提供在 DML 来增强所显示的信息,并提供新行为,如网格显示和排序的额外信息。 本主题介绍如何自 阅读全文

posted @ 2019-08-23 15:49 活着的虫子 阅读(456) 评论(0) 推荐(1) 编辑

使用调试器标记语言

摘要: 从6.6.07版的调试器开始,为了增强和扩展调试器的数据输出,将使用新的机制:debuggermarkup language (DML)。DML象HTML那样允许在一定格式的标记中包含指令和不显示的信息。调试器的用户界面将能分析额外的信息并提供新的特性。调试器命令可以以纯文本或使用调试器标记语言(D 阅读全文

posted @ 2019-08-23 14:53 活着的虫子 阅读(373) 评论(0) 推荐(0) 编辑

windbg命令行选项

摘要: 我们不仅可以通过GUI的方式使用Windbg,还可以通过命令行的方式使用它,且在有些需求和使用场景下,只能使用命令行模式 windbg命令行使用以下语法: windbg [ -server ServerTransport | -remote ClientTransport ] [-lsrcpath 阅读全文

posted @ 2019-08-23 10:01 活着的虫子 阅读(1519) 评论(0) 推荐(0) 编辑

导航