11 2019 档案

RSDS pdb格式
摘要:本描述了“RSDS”或“DS”类型的pdb(程序数据库)文件的格式,这些文件是由Miscrosoft的link.exe从版本7及更高版本发出的。 什么是PDB文件? 如果选择了/DEBUG选项或/DEBUG:FULL选项,则最新的Microsoft链接器将在链接时创建程序数据库(pdb)文件。pdb 阅读全文

posted @ 2019-11-30 16:18 活着的虫子 阅读(1028) 评论(0) 推荐(0) 编辑

关于windbg报错"No symbols for ntdll. Cannot continue."问题
摘要:最近我写个例子程序研究下某个异常情况,故意制造了个崩溃。然后分析dmp文件。 当我执行!address -summary命令想观察下进程当前内存情况时,去报如下错误: 0:000> !address -summaryNo symbols for ntdll. Cannot continue. 这意思 阅读全文

posted @ 2019-11-30 11:35 活着的虫子 阅读(2682) 评论(5) 推荐(0) 编辑

WinDbg常用命令系列---.cmdtree
摘要:.cmdtree 简介 使用形式 .cmdtree cmdfile 参数 cmdfile命令文件,包含多个你需要的命令。必须是一个文本档 使用步骤 1、使用命令创建文本文件test.wl,使用以下示例作为模板。您可以按所需方式修改{}之间的节: windbg ANSI Command Tree 1. 阅读全文

posted @ 2019-11-28 18:46 活着的虫子 阅读(763) 评论(0) 推荐(0) 编辑

正确创建本地C++发布构建PDBS
摘要:在调试版本中遇到的一个问题是编译本地的C++应用程序。例如,许多局部变量消失了,因为代码生成器没有将它们放在堆栈上,而是将它们放在寄存器中,就像在调试生成中发生的那样。此外,release积极地构建对函数的内联调用,因此代码生成器将函数体直接放入调用方法中。一旦您习惯了编译器的模式,并了解了一点汇编 阅读全文

posted @ 2019-11-28 17:11 活着的虫子 阅读(399) 评论(0) 推荐(0) 编辑

PDB文件会影响性能吗?
摘要:有人问了这样的问题:"我工作的公司正极力反对用生成的调试信息构建发布模式二进制文件,这也是我注册该类的原因之一。他们担心演示会受到影响。我的问题是,在发布模式下生成符号的最佳命令行参数是什么?还有什么地方我可以参考,以表明不应该有性能问题。“ 回答是:不,生成PDB文件对性能没有任何影响。至于我也可 阅读全文

posted @ 2019-11-28 16:45 活着的虫子 阅读(658) 评论(0) 推荐(0) 编辑

每个开发人员必须知道PDB文件知识
摘要:大多数开发人员都意识到PDB文件有助于您进行调试,但仅此而已。如果你不知道PDB文件是怎么回事,不要觉得很糟糕,因为虽然有文档在那里,但它分散在周围,而且大部分是为编译器和调试器编写器准备的。虽然编写编译器和调试器非常酷和有趣,但这可能不是你的工作。我想做的是把每个在微软操作系统上进行开发的人都必须 阅读全文

posted @ 2019-11-28 16:28 活着的虫子 阅读(1511) 评论(0) 推荐(2) 编辑

Windbg妙用
摘要:计算器 当你在调试,需要做一些从十六进制到十进制的简单转换,一些整数计算你不需要切换到calc.exe,你可以只使用windbg的表达式计算器。假设你得到了一个十六进制的大小,比如说2e903000,您可以转换并执行如下计算: 0:000> ?2e903000 Evaluate expression 阅读全文

posted @ 2019-11-28 15:10 活着的虫子 阅读(368) 评论(0) 推荐(0) 编辑

在x64计算机上捕获32位进程的内存转储
摘要:这是一个我经常遇到的问题,我们经常会遇到这样的情况:我们必须重新捕获内存转储,因为内存转储是以“错误”的方式捕获的。简而言之:如果在64位计算机上执行32位进程,则需要使用允许创建32位转储的工具捕获转储。 怎么知道进程是32位的? 如果您在64位计算机上,可以检查任务管理器以查看您的进程正在使用的 阅读全文

posted @ 2019-11-28 14:22 活着的虫子 阅读(914) 评论(0) 推荐(0) 编辑

为什么我的堆栈上会有奇怪的函数名?(关于符号的讨论)
摘要:符号可以包含有关全局变量、局部变量、函数名、参数、结构和源行号的信息。符号有三种类型:导出符号、pdb符号(公共符号)和专用pdb符号(专用符号)。导出符号是dll本身的一部分。例如,ntdll.dll和kernel32.dll将其函数的很大一部分公开为导出符号,因此可以将它们称为API,但是在进程 阅读全文

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

将windbg与.dmp文件关联
摘要:如果您厌倦了启动调试器、加载转储文件、设置sympath、加载扩展名等,这里有一个很好的方法,可以在.dmp文件的上下文菜单上获取“调试此转储文件”,并自动加载所有您喜欢的命令。首先创建一个包含以下内容的.reg文件(在修改注册表时一定要非常小心) Windows Registry Editor V 阅读全文

posted @ 2019-11-28 10:39 活着的虫子 阅读(416) 评论(0) 推荐(0) 编辑

在windbg调试.net时遇到的问题
摘要:调试.net应用程序时,有时会在windbg中收到错误消息。以下是我最常遇到的几个问题。 Failed to start stack walk 启动堆栈遍历失败 如果你运行sos命令!clrstack在线程上显示.net堆栈,而此线程是.net线程,但它当前未运行任何.net代码,sos将提示失败“ 阅读全文

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

记一次CLR exception(e0434352)---System.BadImageFormatException异常排查 ,这次情况不一样
该文被密码保护。

posted @ 2019-11-27 15:35 活着的虫子 阅读(3) 评论(0) 推荐(0) 编辑

记一次0x80000003中断异常的排查
该文被密码保护。

posted @ 2019-11-27 14:24 活着的虫子 阅读(2) 评论(0) 推荐(0) 编辑

中断点异常 STATUS_BREAKPOINT(0x80000003)
摘要:简介 STATUS_BREAKPOINT,值为0x80000003,称为中断指令异常,表示在系统未附加内核调试器时遇到断点或断言。 触发条件 通常中断指令异常可以在以下条件下触发: 硬代码中断请求,如:asm int 3 System.Diagnostics.Debugger.Break(C 35) 阅读全文

posted @ 2019-11-27 11:15 活着的虫子 阅读(24780) 评论(12) 推荐(1) 编辑

在WinDbg里使用MEX调试扩展
摘要:简介 针对WinDbg的MEX调试扩展可以帮助您简化常见的调试器任务,并为调试器提供强大的文本筛选功能。此扩展被Microsoft支持工程师广泛用于解决流程应用程序的故障。 下载&安装 下载mex.exe存档。下载地址https://www.microsoft.com/en-us/download/ 阅读全文

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

WinDbg常用命令系列---|(进程状态)
摘要:|(进程状态) 简介 (|) 命令显示指定进程的状态或当前正在调试你的所有进程。 使用形式 | Process 参数 Process 指定要显示的进程。 如果省略此参数,将显示所有正在调试的进程。 支持环境 模式 仅限用户模式 目标 实时、 崩溃转储 平台 全部 备注 只能在用户模式下指定进程。可以 阅读全文

posted @ 2019-11-26 10:24 活着的虫子 阅读(1229) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---||(系统状态)
摘要:||(系统状态) 简介 双竖线 ( || ) 命令将打印指定的系统或当前正在调试的所有系统的状态。 使用形式 || System 参数 System 指定要显示的系统。 如果省略此参数,将显示正在调试的所有系统。 支持环境 模式 调试多个目标 目标 实时、 崩溃转储 平台 全部 备注 || 命令仅在 阅读全文

posted @ 2019-11-26 10:15 活着的虫子 阅读(299) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---.write_cmd_hist (写命令历史记录)
摘要:.write_cmd_hist 简介 .write_cmd_hist命令将调试器命令窗口的整个历史记录写入文件。 使用形式 .write_cmd_hist Filename 参数 Filename指定要创建的文件的路径和文件名。 支持环境 此命令仅在 WinDbg 中可用,并能在脚本文件。 模式 用 阅读全文

posted @ 2019-11-25 19:07 活着的虫子 阅读(488) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---!findstack
摘要:!findstack 简介 !findstack扩展查找包含指定符号或模块的所有堆栈。 使用形式 !findstack Symbol[DisplayLevel] !findstack -? 参数 Symbol指定符号或模块。 DisplayLevel 指定显示内容。这可以是以下任何一个值。默认值为1 阅读全文

posted @ 2019-11-23 16:34 活着的虫子 阅读(288) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---!peb
摘要:!peb 简介 !peb显示进程环境块(PEB)中信息的格式化视图。 使用形式 !peb [PEB-Address] 参数 PEB-Address要检查其PEB的进程的十六进制地址。(这不是从进程的内核进程块派生的PEB地址。)如果在用户模式中省略PEB地址,则使用当前进程的PEB。如果在内核模式下 阅读全文

posted @ 2019-11-23 16:14 活着的虫子 阅读(1249) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---!teb
摘要:!teb 简介 !teb扩展显示线程环境块(teb)中信息的格式化视图。 使用形式 !teb [TEB-Address] 参数 TEB-Address 要检查其TEB的线程的十六进制地址。(这不是从线程的内核线程块派生的TEB地址。)如果在用户模式中省略了TEB地址,则使用当前线程的TEB。如果在内 阅读全文

posted @ 2019-11-23 16:06 活着的虫子 阅读(1038) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---!heap
摘要:!heap 简介 !heap扩展显示堆使用信息、控制堆管理器中的断点、检测泄漏的堆块、搜索堆块或显示页堆信息。此扩展支持段堆和NT堆。使用!heap没有参数列出所有堆及其类型的堆。 使用形式 !heap [HeapOptions] [ValidationOptions] [Heap] !heap - 阅读全文

posted @ 2019-11-23 15:21 活着的虫子 阅读(3588) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---!htrace
摘要:!htrace 简介 !htrace扩展显示一个或多个句柄的堆栈跟踪信息。 使用形式 用户模式!htrace [Handle [Max_Traces]] !htrace -enable [Max_Traces] !htrace -snapshot !htrace -diff !htrace -dis 阅读全文

posted @ 2019-11-23 14:40 活着的虫子 阅读(726) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---!handle
摘要:!handle 简介 !handle扩展显示有关目标系统中一个或所有进程拥有的一个或多个句柄的信息。 使用形式 用户模式!handle [Handle [UMFlags [TypeName]]] !handle -? 内核模式!handle [Handle [KMFlags [Process [Ty 阅读全文

posted @ 2019-11-23 14:22 活着的虫子 阅读(2086) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---!dlls
摘要:!dlls 简介 !dlls扩展显示所有加载模块或指定线程或进程正在使用的所有模块的表条目。 使用形式 !dlls [Options][LoaderEntryAddress] !dlls -h 参数 Options 指定输出的级别。 此参数可以是下列值中的任意组合: -f 显示文件标头。 -s 显示 阅读全文

posted @ 2019-11-23 14:00 活着的虫子 阅读(775) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---!cppexr
摘要:!cppexr 简介 !cppexr显示C++异常记录的内容。 使用形式 !cppexr Address 参数 Address指定要显示的C++异常记录的地址。 支持环境 Windows 2000 Ext .dll Windows XP 和更高版本 Ext .dll 备注 ! Cppexr扩展显示与 阅读全文

posted @ 2019-11-23 11:42 活着的虫子 阅读(290) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---.load, .loadby (Load Extension DLL)
摘要:.load, .loadby (Load Extension DLL) 简介 .load和.loadby命令将新的扩展DLL加载到调试器中。 使用形式 .load DLLName !DLLName.load .loadby DLLName ModuleName 参数 DLLName 指定要加载的调试 阅读全文

posted @ 2019-11-23 11:19 活着的虫子 阅读(1457) 评论(0) 推荐(0) 编辑

WinDbg常用命令系列---!envvar
摘要:!envvar 简介 !envvar扩展命令显示特定环境变量的值。 使用形式 !envvar Variable 参数 Variable指定显示其值的环境变量。变量不区分大小写。 环境 Windows 2000 不可用 Windows XP 及更高版本 Exts.dll 备注 这个!envvar扩展在 阅读全文

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

如何用Windbg从dump获取计算机名、主机名
摘要:对内存转储时发生的事情有一定的了解是非常重要的。这有助于您确定要执行哪些WinDbg命令,并为您提供一些有关如何解释这些命令输出的上下文。我正在查看一个服务器的内存转储,该服务器存在性能问题。我在内存转储中根本没有看到任何运行,这意味着被转储的进程不是有问题的进程,或者,转储是从错误的机器上获取的? 阅读全文

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

关于System.ExecutionEngineException异常
摘要:什么是System.ExecutionEngineException 公共语言运行库的执行引擎中出现内部错误时引发的异常。这个类不能继承。 继承 Object Exception SystemException ExecutionEngineException 说明 执行引擎错误是永远不应该发生的致 阅读全文

posted @ 2019-11-21 18:01 活着的虫子 阅读(4699) 评论(0) 推荐(0) 编辑

记一次System.ExecutionEngineException异常的排查
该文被密码保护。

posted @ 2019-11-21 17:55 活着的虫子 阅读(1) 评论(0) 推荐(0) 编辑

记一次搜狗拼音输入法引起的崩溃
该文被密码保护。

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

调试自定义过滤器的未处理异常
该文被密码保护。

posted @ 2019-11-21 16:39 活着的虫子 阅读(0) 评论(0) 推荐(0) 编辑

用Visual C++生成调试信息
该文被密码保护。

posted @ 2019-11-21 10:47 活着的虫子 阅读(5) 评论(0) 推荐(0) 编辑

调试信息匹配
该文被密码保护。

posted @ 2019-11-20 17:50 活着的虫子 阅读(3) 评论(0) 推荐(0) 编辑

又一款dump文件观察工具---MiniDumpView
摘要:简介 MiniDumpView实用程序可用于显示minidump中数据流的内容。特别是,可以显示以下信息: 操作系统和CPU信息 进程信息(进程ID和时间) 模块列表(包含每个模块的详细信息) 线程列表(包含每个线程的详细信息) 异常信息 保存在小型转储中的内存区域列表 打开的句柄列表 虚拟内存布局 阅读全文

posted @ 2019-11-20 17:24 活着的虫子 阅读(1439) 评论(0) 推荐(0) 编辑

Dump文件定制工具---MiniDump Wizard
摘要:MiniDump向导应用程序允许在不编写代码的情况下尝试MiniDumpWriteDump和MiniDumpCallback函数。可以指定将传递给MiniDumpWriteDump函数的MINIDUMP_TYPE标志的组合,并且可以在一系列对话框中响应MiniDumpCallback调用。 如何使用 阅读全文

posted @ 2019-11-20 17:00 活着的虫子 阅读(656) 评论(0) 推荐(0) 编辑

有效的minidump(二)
摘要:函数MiniDumpCallback 如果要自定义MINIDUMP类型标志无法访问的MINIDUMP的内容,可以使用MiniDumpCallback函数。这是一个用户定义的回调,当MiniDumpWriteDump需要用户决定是否将某些数据包含到minidump中时,它将被调用。借助此功能,我们可以 阅读全文

posted @ 2019-11-20 15:47 活着的虫子 阅读(1707) 评论(0) 推荐(0) 编辑

有效的minidump(一)
摘要:简介 在过去的几年中,崩溃转储成为我们调试活动的一个重要部分。当我们的软件在客户的机器出现故障时,创建应用程序状态的快照并使用在开发人员机器上运行的传统调试器对其进行分析的可能性是非常宝贵的。第一代崩溃转储(通常称为“完全用户转储”)捕获了整个进程虚拟内存的内容。尽管对于事后调试毫无疑问是有用的,但 阅读全文

posted @ 2019-11-20 13:57 活着的虫子 阅读(2980) 评论(0) 推荐(0) 编辑

Minidumps 和 modules匹配
摘要:简介 调试应用程序时,调试器必须加载可执行模块的符号,以便能够显示有意义的调用堆栈、当前源代码行、变量值等。如果您曾经调试过在另一个系统上创建的小型转储,那么您已经知道除了符号之外,调试器还需要访问创建转储时由应用程序加载的相同版本的模块。如果调试器找不到与模块完全相同的版本(即匹配的模块),则无法 阅读全文

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

如何生成公有调试符号
摘要:生成公有调试符号有2种形式:1.编译链接过程中生成;2.从私有调试符号文件中剥离生成 编译链接过程中生成 方式一 工程属性-Linker-Debuging-strip private symbols 方式二 工程属性-Linker-Command Line-Additional Options 增加 阅读全文

posted @ 2019-11-19 17:35 活着的虫子 阅读(386) 评论(1) 推荐(0) 编辑

关于Windows系统里的事后调试
摘要:我一直在想,应用程序抛出未处理的异常和附加到进程的调试器之间会发生什么。显然这些信息就在我眼皮底下,但我是瞎子。Windows调试器关于事后调试的文档包含了您想要知道的所有详细信息。 最常见的应用程序错误称为异常。这些错误包括访问冲突、除以零错误、数字溢出和许多其他类型的错误。应用程序也可能导致断点 阅读全文

posted @ 2019-11-19 14:44 活着的虫子 阅读(741) 评论(0) 推荐(0) 编辑

验证符号文件的又一方法(!itoldyouso)
摘要:如果您正在开发软件,很可能遇到了“不匹配的PDB”调试器错误。当您将调试器指向错误的符号路径时,通常会发生这种情况。 但有时你确信你所指向的符号是正确的符号,这让你想知道为什么调试器认为这些符号不匹配。 "!sym noisy“将告诉您windows调试器如何搜索符号,并在遇到不匹配的pdb时报告它 阅读全文

posted @ 2019-11-19 10:55 活着的虫子 阅读(645) 评论(0) 推荐(0) 编辑

windbg在加载模块时下断点
摘要:假设我们希望在加载特定的dll时中断调试器,例如,我想启用一些SOS命令,而clr还没有加载,当您遇到程序中过早发生的异常,并且您不能依赖手动尝试在正确的时间中断时,这尤其有用。例如,在将调试器附加到一个进程之后,我会得到一个错误,因为clr尚未加载 0:000> .loadby sos clr U 阅读全文

posted @ 2019-11-18 17:25 活着的虫子 阅读(1601) 评论(0) 推荐(0) 编辑

SOS.DLL在windbg里加载错误
摘要:sos.dll/mscordacwks.dll 公共语言运行库(CLR)是执行托管代码的Microsoft.NET框架的核心引擎。简单地说,它通过在托管程序集中使用中间语言和元数据,JIT按需编译代码,构建程序集定义和使用的类型的内存表示,并确保生成的代码是安全的、安全的和可验证的,并在需要时执行。 阅读全文

posted @ 2019-11-18 17:11 活着的虫子 阅读(2160) 评论(2) 推荐(0) 编辑

异常过滤器的好坏(CLR)
摘要:为什么有些语言支持它们而另一些不支持呢?把它们加到我的新语言里是个好主意吗?我应该什么时候使用过滤器和catch/rethrow?就像很多事情一样,异常过滤器有好的一面也有坏的一面… 什么是异常过滤器? CLR提供了许多高级语言可以构建的异常处理原语。有些是相当明显的,并且很容易映射到我们大多数人都 阅读全文

posted @ 2019-11-18 14:44 活着的虫子 阅读(292) 评论(0) 推荐(0) 编辑

是Mscoreei.dll的正确版本吗?
摘要:在安装.NET 4.0或更高版本之后,您可能会注意到.NET进程有点不寻常。下面是用.NET 2.0编译器编译的简单“Hello World”可执行文件的加载模块的部分列表。 开始-结束模块名称 60f00000 61491000 mscorwks C:\Windows\Microsoft.NET\ 阅读全文

posted @ 2019-11-18 11:49 活着的虫子 阅读(512) 评论(0) 推荐(0) 编辑

CLR如何将SEH异常映射到托管异常类型
摘要:托管异常处理构建在Windows操作系统的结构化异常处理之上,通常称为SEH。这意味着CLR了解如何在SEH和托管异常系统之间进行互操作,这是一个非常关键的点,因为SEH基于异常代码的概念,而托管异常处理则表示使用托管类型的异常。CLR相应地将SEH异常映射到托管异常,具体取决于引发SEH异常的方式 阅读全文

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

CLR Exception---E0434F4D
摘要:什么是CLR Exception E0434F4D 就是公共语言运行时(CLR)异常,异常代码为0xE0434F4D。因此任何托管异常,如NullReferenceException、invalidooperationexception或SQLException…基本上所有托管异常都在本机中称为0x 阅读全文

posted @ 2019-11-16 10:38 活着的虫子 阅读(1340) 评论(0) 推荐(0) 编辑

CLR 调试体系结构
摘要:公共语言运行时 (CLR) 调试 API 专门用作操作系统内核的一部分。 在非托管代码中,当程序生成异常时,内核将暂停执行进程,并使用 Win32 调试 API 将异常信息传递给调试器。 CLR 调试 API 可以为托管代码提供相同功能。 当托管代码生成异常时,CLR 调试 API 将暂停执行进程, 阅读全文

posted @ 2019-11-16 10:05 活着的虫子 阅读(352) 评论(0) 推荐(0) 编辑

CLR 调试概述
摘要:利用公共语言运行时 (CLR) 调试 API,工具供应商可以编写调试器来调试运行于 CLR 环境中的应用程序。 要调试的代码可为 CLR 支持的任何代码种类。CLR 调试 API 主要是使用非托管代码实现的。 因此,调试 API 呈现为一组组件对象模型 (COM) 接口。 API 由以下各项组成: 阅读全文

posted @ 2019-11-16 10:00 活着的虫子 阅读(844) 评论(0) 推荐(0) 编辑

CLR Exception---E0434352
摘要:什么是CLR Exception E0434352 CLR异常是.NET应用程序生成的异常类型。异常被封装在从System.exception类派生的类中。它的异常代码是0xE0434352,代码的后面三个字节对应assic码的 "CCR",所以又叫CCR异常。 异常代码e043432可以是任何内容 阅读全文

posted @ 2019-11-15 18:35 活着的虫子 阅读(4398) 评论(0) 推荐(0) 编辑

关于System.MissingMethodException异常
摘要:什么是MissingMethodException 试图动态访问不存在的方法时引发的异常。 继承 Object Exception SystemException MemberAccessException MissingMemberException 说明 通常, 如果代码尝试访问不存在的类方法, 阅读全文

posted @ 2019-11-15 11:57 活着的虫子 阅读(7468) 评论(0) 推荐(0) 编辑

记一次CLR exception(e0434352)---System.MissingMethodException异常崩溃排查
该文被密码保护。

posted @ 2019-11-15 11:47 活着的虫子 阅读(3) 评论(0) 推荐(0) 编辑

关于异常System.ArgumentException
摘要:什么是System.ArgumentException 当向方法提供的参数之一无效时引发的异常。 继承 Object Exception SystemException ArgumentException 详细说明 ArgumentException当调用方法并且传递的自变量中至少有一个参数不符合所 阅读全文

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

记一次CLR exception(e0434352)---System.ArgumentException异常崩溃的排查
该文被密码保护。

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

从.NET/CLR返回的hresult:0x8013XXXX的解释
摘要:什么是0x8013XXXX 有时您可能会遇到从.NET返回的神秘HRESULT,它以0x8013开头,例如0x80131522。不幸的是,Visual Studio附带的错误查找并不能真正处理那些奇怪的HRESULT。它们是什么? 事实上,它们是由.NET/CLR在头文件中定义的。所有这些失败/成功 阅读全文

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

关于System.BadImageFormatException
摘要:什么是BadImageFormatException BadImageFormatException是当动态链接库 (DLL) 或可执行程序的文件映像无效时引发的异常。 可能的原因 如果动态链接库 (.dll 文件) 或可执行文件 (.exe 文件) 的文件格式不符合公共语言运行时所需的格式, 则会 阅读全文

posted @ 2019-11-14 16:45 活着的虫子 阅读(5629) 评论(0) 推荐(0) 编辑

记一次CLR exception(e0434352)---System.BadImageFormatException异常排查
该文被密码保护。

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

Windows用户模式调试内部组件
摘要:简介 允许用户模式调试工作的内部机制很少得到充分的解释。更糟糕的是,这些机制在Windows XP中已经发生了根本性的变化,当许多支持被重新编写时,还通过将ntdll中的大多数例程作为本地API的一部分,使更多的子系统变得可移植。希望读者对C和通用NT内核体系结构和语义有一些基本的了解。此外,这并不 阅读全文

posted @ 2019-11-14 00:54 活着的虫子 阅读(519) 评论(0) 推荐(0) 编辑

内核用户模式调试支持(Dbgk)
摘要:简介 将详细分析Windows调试的内核模式接口。希望读者对C和通用NT内核体系结构和语义有一些基本的了解。此外,这并不是介绍什么是调试或如何编写调试器。它可以作为经验丰富的调试器编写人员或好奇的安全专家的参考。 内核用户模式调试支持 最后一块拼图以内核模式存在,并提供了我们到目前为止看到的事件和结 阅读全文

posted @ 2019-11-14 00:33 活着的虫子 阅读(1572) 评论(0) 推荐(0) 编辑

Windows本机调试内部组件
摘要:将详细分析Windows调试的本机接口。希望读者对C和通用NT内核体系结构和语义有一些基本的了解。此外,这并不是介绍什么是调试或如何编写调试器。它可以作为经验丰富的调试器编写人员或好奇的安全专家的参考。 本机调试 现在是时候看看事情的本机方面,以及ntdll.dll中的包装层如何与内核通信。DbgU 阅读全文

posted @ 2019-11-14 00:07 活着的虫子 阅读(854) 评论(0) 推荐(0) 编辑

Visual C++ 里的 Classes, Methods and RTTI
摘要:类的基本布局 为了说明以下内容,让我们考虑这个简单的例子: class A { int a1; public: virtual int A_virt1(); virtual int A_virt2(); static void A_static1(); void A_simple1(); }; cl 阅读全文

posted @ 2019-11-13 23:01 活着的虫子 阅读(510) 评论(0) 推荐(0) 编辑

Visual C++ 里的异常处理
摘要:微软Visual C++是Win32最广泛使用的编译器,因此Win32反向器对其内部工作非常熟悉。能够识别编译器生成的粘合代码有助于快速集中于程序员编写的实际代码。它还有助于恢复程序的高级结构。我将集中讨论MSVC编译程序中的堆栈布局、异常处理和相关结构。假设对汇编程序、寄存器、调用约定等有一定的了 阅读全文

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

Windows加载器与模块初始化
摘要:本文是Matt Pietrek在1999年9月的MSJ杂志上发表的关于Windows加载器与模块初始化方面的文章。作者深入分析了LdrpRunInitialize璕outines例程的作用,用C语言写出了此函数的伪代码,并剖析了模块初始化的整个过程,对于想了解Windows加载器的读者来说是不可多得 阅读全文

posted @ 2019-11-13 19:57 活着的虫子 阅读(980) 评论(0) 推荐(0) 编辑

记又一次内存爆掉导致的崩溃
该文被密码保护。

posted @ 2019-11-13 19:28 活着的虫子 阅读(1) 评论(0) 推荐(0) 编辑

Win32下的中断和异常
摘要:本文是Matt Pietrek在1997年月10月的MSJ杂志Under The Hood专栏上发表的文章。中断和异常在DOS时代是整个系统的灵魂,但Windows已将其隐藏到了系统深处。Matt Pietrek详细剖析了Windows下的中断和异常及其处理机制以及内核模式与用户模式代码之间调用的问 阅读全文

posted @ 2019-11-13 18:30 活着的虫子 阅读(1135) 评论(0) 推荐(0) 编辑

从TEB到PEB再到SEH(二)
摘要:什么是SEH? SEH( Structured Exception Handling , 结构化异常处理 ) 结构化异常处理(SEH)是Windows操作系统提供的强大异常处理功能。而Visual C++中的__try{}/__finally{}和__try{}/__except{}结构本质上是对W 阅读全文

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

从TEB到PEB再到SEH(一)
摘要:什么是TEB? TEB(Thread Environment Block,线程环境块) 线程环境块中存放着进程中所有线程的各种信息 这里我们了解到了TEB即为线程环境块, 进程中每一条线程都对应着的自己的“TEB”。 TEB的访问方法 ntdll.NtCurrentTeb() 函数用来返回当前线程的 阅读全文

posted @ 2019-11-13 16:03 活着的虫子 阅读(1715) 评论(0) 推荐(0) 编辑

微软安全技术Shim
摘要:Shim是微软系统中一个小型函数库,用于透明地拦截API调用,修改传递的参数、自身处理操作、或把操作重定向到其他地方。Shim主要用于解决遗留应用程序在新版Windows系统上的兼容性问题,但Shim也可用于其他方面。例如上周微软紧急推出针对“微软Office Powerpoint 0day漏洞(C 阅读全文

posted @ 2019-11-12 18:51 活着的虫子 阅读(2358) 评论(0) 推荐(0) 编辑

堆内存腐败异常(STATUS_HEAP_CORRUPTION---0xC0000374)
摘要:什么是内存腐败 当堆内存位置的内容由于编程行为而被修改,超出了原始程序构造的意图时,计算机程序就会发生内存腐败,也可以叫内存破坏;这被称为违反内存安全。内存腐败的最可能原因是编程错误。当腐败的内存内容稍后在该程序中使用时,它要么导致程序崩溃,要么导致奇怪的程序行为。Windows系统上近10%的应用 阅读全文

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

记一次堆破坏引起的崩溃
该文被密码保护。

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

不用VS调试.Net
摘要:将来,任何开发人员都将需要调试应用程序,并且将无法访问Visual Studio,在某些情况下甚至无法访问源代码。例如,在生产web或应用服务器上调试问题时,我真的不想安装Visual Studio并跨所有源代码进行复制;这是不实际的,有时甚至是不允许的。正是在这种时候,我们需要另一个工具,一个调试 阅读全文

posted @ 2019-11-11 19:28 活着的虫子 阅读(493) 评论(0) 推荐(0) 编辑

查看.NET应用程序中的异常(下)
摘要:为什么要使用内存转储进行调试? 在两种主要情况下,您可能需要使用内存转储进行调试。第一种情况是应用程序有一个未处理的异常并崩溃,而您只有一个内存转储。第二种情况是,在生产环境中出现异常或特定行为,并且在排除故障时不能将调试器保留在附件中,因为调试器可能会中断用户服务。相反,您可以附加cdb,在正确的 阅读全文

posted @ 2019-11-11 17:33 活着的虫子 阅读(379) 评论(0) 推荐(0) 编辑

查看.NET应用程序中的异常(上)
摘要:内存转储是查明托管.NET应用程序中异常的原因的一种极好的方法,特别是在生产应用程序中发生异常时。当您在无法使用Visual Studio的应用程序中跟踪异常时,cdb和sos.dll的使用技术就变成了它们自己的技术。它们可能也不是你需要经常使用的技能,但在某些时候,它们将是无价的。Edward提供 阅读全文

posted @ 2019-11-11 16:59 活着的虫子 阅读(660) 评论(0) 推荐(1) 编辑

用于未处理异常错误的.NET框架清理工具
摘要:当你启动某些程序时,会收到与此错误类似的未处理异常错误:Unhandled e0434f4dh exception at 7c81eb33h。此问题是由于.NET框架未正确安装或.NET框架系统中的另一个问题引起的。 最常见的情况是,可以通过重新安装相应的.NET框架先决条件来解决此问题。但是,在许 阅读全文

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

CLR内部异常(下)
摘要:直接使用SEH 有些情况里直接使用SEH会更合适一些。特别是,如果需要在第一次遍历(first pass - SEH异常处理流程里的第一遍处理)时需要执行某些操作时,也就是在堆栈向上展开之前,SEH是唯一的选项。一个SEH里的 __try/__except 过滤代码除了决定是否要处理某个异常以外,还 阅读全文

posted @ 2019-11-11 10:55 活着的虫子 阅读(247) 评论(0) 推荐(0) 编辑

CLR内部异常(中)
摘要:不捕捉某一个异常 常常有这种情况,代码不需要捕捉异常,但需要执行一些清理或者修正操作。虽然不总是,支持物(holders)经常用在这种场景里。在支持物(holders)不适用的情况里,CLR提供了两个“finally”块的变种。 EX_TRY_FOR_FINALLY 当需要在代码退出时执行修正操作时 阅读全文

posted @ 2019-11-11 10:49 活着的虫子 阅读(264) 评论(0) 推荐(0) 编辑

CLR内部异常(上)
摘要:当我们提到CLR里的“异常”,要注意一个很重要的区别。有通过如C#的try/catch/finally暴露给应用程序,并由运行时提供机制全权实现的托管异常。也有运行时自己使用的异常。大部分运行时开发人员很少需要想到如何实现并暴露托管异常模型。但每个运行时开发人员都应该懂得CLR实现里是怎么使用异常的 阅读全文

posted @ 2019-11-11 10:45 活着的虫子 阅读(546) 评论(0) 推荐(0) 编辑

深入解析pure virtual function call
摘要:在本文中,我们将不解释为什么会提示“纯虚拟函数调用”和如何提示“纯虚拟函数调用”,而是详细解释在win32平台的构造函数/析构函数中直接/间接调用纯虚拟函数时程序本身。在开始时,将显示一个经典示例,在这个示例中,它将提示一个带有“纯虚拟函数调用”的消息框。 /** * "pure virtual f 阅读全文

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

_purecall函数
摘要:默认纯虚拟函数调用错误处理程序。 当调用纯虚拟成员函数时,编译器生成调用此函数的代码。 原型: extern "C" int __cdecl _purecall(); _Purecall函数是 microsoft C++编译器的特定于 microsoft 的实现细节。 此函数不可以直接通过代码调用, 阅读全文

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

RaiseFailFastException函数
摘要:引发绕过所有异常处理程序(基于帧或矢量)的异常。引发此异常将终止应用程序并调用Windows错误报告(如果Windows错误报告正在运行)。 原型: VOID WINAPI RaiseFailFastException( __in_opt PEXCEPTION_RECORD pExceptionRe 阅读全文

posted @ 2019-11-08 18:05 活着的虫子 阅读(1757) 评论(0) 推荐(0) 编辑

windows系统的快速失败机制---fastfail
摘要:windows系统的快速失败机制 fastfail,是一种用于“快速失败”请求的机制 — 一种潜在破坏进程请求立即终止进程的方法。 无法使用常规异常处理设施处理可能已破坏程序状态和堆栈至无法恢复的的严重故障。 使用 __fastfail 终止进程开销最少。 快速失败请求是独立的请求,通常只需执行两个 阅读全文

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

悲伤的 C++ throw(…)
摘要:当在C++语言中引入异常时,引入了相应的throw(…)动态异常说明符,注释了哪些异常可以由函数抛出。比如: // this function might throw an integer or a pointer to char, // but nothing else. void foo() t 阅读全文

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

STATUS_STACK_BUFFER_OVERRUN不一定是栈缓冲区溢出
摘要:STATUS_STACK_BUFFER_OVERRUN异常一般是指栈缓冲区溢出的溢出,代码为0xC0000409,消息提示一般为“Security check failure or stack buffer overrun”。微软给出的解释如下:系统在应用程序中检测到基于堆栈的缓冲区溢出。此溢出可能 阅读全文

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

记一次在父类析构里调用纯虚函数而引发的异常
该文被密码保护。

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

万能五笔输入法引发的血案
该文被密码保护。

posted @ 2019-11-05 19:03 活着的虫子 阅读(5) 评论(0) 推荐(0) 编辑

Windows是如何将64位Ntdll映射到32位进程的---转自简书
摘要:今天我们探索一个问题: 64位的ntdll是如何被加载到WoW64下的32位进程?今天的旅程将会带领我们进入到Windows内核逻辑中的未知领域,我们将会发现32位进程的内存地址空间是如何被初始化的。 WoW64是什么? 来自MSDN: WOW64是允许32位Windows应用程序无缝运行在64位W 阅读全文

posted @ 2019-11-04 18:46 活着的虫子 阅读(723) 评论(0) 推荐(0) 编辑

记一次std::__non_rtti_object异常的崩溃
该文被密码保护。

posted @ 2019-11-04 18:01 活着的虫子 阅读(3) 评论(0) 推荐(0) 编辑

导航