Windows异常】的更多相关文章

本篇读书笔记主要参考自<深入解析Windows操作系统>和<软件调试>这两本书. IDT是处理异常,实现操作系统与CPU的交互的关口. 系统在初始化阶段会去填写这个结构. IDT的每一个表项都成为门描述符,因为IDT的功能就像大门一样,从一个空间跳到另一个空间去执行. IDT中包含三种门描述符 任务门描述符:用于任务切换 中断门描述符:用于描述中断处理例程 陷阱们描述符:用于描述异常处理例程 CPU如何使用IDT cpu首先根据IDTR找到IDT,再利用向量号码找到门描述符.再去判…
简介 KiUserExceptionDispatcher 是SEH分发器的用户模式的负责函数.当一个异常发生的时候,该异常将生成一个异常事件,内核检查该异常是否是由于执行用户模式代码导致的.如果是这样的话,内核修改栈上的trap frame,因此当内核从中断或者异常返回的时候,线程将从KiUserExceptionDispatcher 函数执行而不是导致异常的指令.内核将另外安排几个参数(一个 PCONTEXT 和一个 PEXCEPTION_RECORD),它们描述了异常发生时机器的状态,而且在…
反调试--Windows异常-SEH 概念: SEH:Structured Exception Handling SEH是Windows默认的异常处理机制 如何使用 在代码中使用 __try​​__except()//结构类型的语句 __except()小括号里面填写表达式,表达式为真的时候执行里面的内容 __try里面包含的是可能触发异常的语句,except里面包含的是出现了异常后执行的操作. 例子: int main(){ __try { cout<<"hello,world&q…
转载地址: Windows 2008 R2查看异常关机或开机事件ID https://blog.csdn.net/hejun1218/article/details/81059327…
根据异常来源,一般分硬件异常和软件异常,它们处理的流程大致一样,下面简单讲一下. 如果是硬件异常,CPU会根据中断类型号转而执行对应的中断处理程序.CPU会在IDT中查找对应的函数来处理,各个异常处理函数不仅仅处理异常还需要将异常信息封装,以便对后续处理,KiTrapXX例程在完成针对本异常的特别动作后,通常会调用CommonDispatchException函数,它会在栈中分配一个EXCEPTION_RECORD结构,并把异常信息存储到该结构中.在准备好这个结构后,它会调用内核中的KiDisp…
一.什么是异常 异常指的是在程序运行过程中发生的异常事件,通常是由外部问题(如硬件错误.输入错误)所导致的.简单来说异常就是对于非预期状况的处理,当我们在运行某个程序时出现了异常状况,就会进入异常处理流程. 二.异常分类 根据异常来源分,可以分为如下两种异常: 硬件异常硬件异常是由cpu产生,其中硬件异常又和中断.系统调用等行为有着密切的联系.硬件异常可以分为三种:fault,在处理此类异常时,操作系统会将遭遇异常时的“现场”保存下来(比如EIP.CS等寄存器的值),然后将调用相应的异常处理函数…
当有异常发生时,CPU会通过IDT表找到异常处理函数,即内核中的KiTrapXX系列函数,然后转去执行.但是,KiTrapXX函数通常只是对异常做简单的表征和描述,为了支持调试和软件自己定义的异常处理函数,系统需要将异常分发给调试器或应用程序的处理函数. 为了更好的管理异常,Windows系统定义了专门的数据结构EXCEPTION_RECORD来描述异常. typedef struct _EXCEPTION_RECORD { DWORD                    ExceptionC…
(一) 发生异常时系统的处理顺序(by Jeremy Gordon, Hume): 1.系统首先判断异常是否应发送给目标程序的异常处理例程,如果决定应该发送,并且目标程序正在被调试,则系统     挂起程序并向调试器发送EXCEPTION_DEBUG_EVENT消息. 2.如果你的程序没有被调试或者调试器未能处理异常,系统就会继续查找你是否安装了线程相关的异常处理例程,如果     你安装了线程相关的异常处理例程,系统就把异常发送给你的程序seh处理例程,交由其处理. 3.每个线程相关的异常处理…
#include "stdafx.h"#include <Windows.h>#include <float.h> DWORD Filter (LPEXCEPTION_POINTERS, LPDWORD);double x = 1.0, y = 0.0; int _tmain (int argc, LPTSTR argv[]){    DWORD eCategory, i = 0, ix, iy = 0;    LPDWORD pNull = NULL;    …
当一个异常发生时,操作系统要向引起异常的线程的栈里压入三个结构,这三个结构是:E X C E P T I O N _ R E C O R D结构.C O N T E X T结构和E X C E P T I O N _ P O I N T E R S结构. 一.E X C E P T I O N _ R E C O R D 这个结构包含有关最近发生的异常的详细信息,这些信息独立于C P U,定义如下: typedefstruct_EXCEPTION_RECORD { DWORD Exception…
问题现象: 高级设置:windows 找不到文件 %windir%\systempropertiesadvanced.exe 请确定文件是否正确后,再试一次 基础信息: windows7 专业版 问题解决: 1.手动运行 SystemPropertiesAdvanced.exe (双击) 2.新增环境变量 windir 和 Path 变量名 windir 变量值 %SystemRoot% 变量名 Path 变量值 %SystemRoot%\system32;%SystemRoot%;%Syste…
楔子 以win11 + vs2022运行VC++ 编译观察的结果. 如果安装了Visual Studio 2022,比如安装在D盘,则路径: D:\Visual Studio\IDE\VC\Tools\MSVC\14.33.31629 下面包含了vcruntime.dll的源码,主要VC编译器和ntdll.dll 以及KernelBase.dll交互. 注:本篇不叙述正常的windows用户态和内核态异常处理,仅看用户态下偏角的运作方式. 代码 void main() { char* pStr…
概念: “C++异常”就是 try{}catch(...){} “SEH异常”就是 __try{} __except(-//){} (关于这两种异常,如有不了解的地方,网上有很多资料可以参考) 目前微软所有的VC编译器(从VC6到VC2010),都默认是打开对C++异常的编译支持的(位于项目选项中的“代码生成”->启用C++异常:/EHsc,VC6是Enable Exception handling) (以下需要仔细阅读) 在VC6中,对EXE工程是同时默认开启“C++异常可以捕获SEH异常”.…
windows 2003启动后进入桌面需要解决的几个问题 1.如何去除掉 ctrl+alt+del的提示界面 2.如何设置自动登录的用户名密码 3.在异常启动时会出现关闭事件跟踪程序 也会导致不能直接进入桌面 往往直接进入桌面是卡在了这个环节 一.去掉ctrl+alt+del的提示界面 1.“开始-->运行”在弹出的窗口中输入gpedit.msc, 2.点击确定即打开了组策略编辑器. 3.在组策略编辑器的左框内依次序展开(点前面的“+”号)-->计算机配置-->Windows设置--&g…
简介 DBG_PRINTEXCEPTION_C,代码0x40010006:DBG_PRINTEXCEPTION_WIDE_C,代码0x4001000A:在调试器的控制台窗口打印异常信息/调试信息.它定义在 ntstatus.h头文件里,如下: //// MessageId: DBG_PRINTEXCEPTION_C//// MessageText://// Debugger printed exception on control C.//#define DBG_PRINTEXCEPTION_C…
加载配置信息 加载配置信息最初最用在Windows NT操作系统中,作为文件头部的延伸部分,后来被用作异常处理.加载配置信息表中存放了基于结构化异常处理(SEH)技术的各项异常句柄.当程序运行发生异常后,操作系统会根据异常处理类别对异常进行分发处理,并依据这些句柄实施程序流程的转向,保证系统能从异常中全身而退. 10.1 何为加载配置信息 加载配置信息结构是PE中定义的一种基本数据类型,最初仅用于Windows NT操作系统,定义一些供Windows NT操作系统加载PE时用到的一些附加信息.后…
装载自:https://docs.microsoft.com/zh-cn/visualstudio/debugger/managing-exceptions-with-the-debugger?view=vs-2022 以下是部分摘抄 在 Visual Studio 中使用调试器管理异常 "异常设置" 窗口在 C# 中支持通用异常类型. 设置vs>"调试">"Windows">"异常设置" 搜索Operati…
在写DAServer的过程中,一直在重视报文逻辑处理,却没有认认真真地去思考异常处理的问题.曾经我发现我在所有的报文处理函数中均没有考虑报文长度的问题,让我内心不由地捏了一把冷汗.我在新增的故障录波及故障报告的目录报文中引入了报文长度检查,但是其他的类型报文我还是没有克服懒惰情绪,报文类型实在是太多了…… 我想,既然没有检查报文长度,那就把C++可能的异常Catch住就行了,等出了问题再处理吧.我在带领别人编程的过程中一直都在强调:无论如何也不能保证自己不出错,但是一定要保证把系统所有可能出错的…
0x01  基本框架  基本框架就是CreateProcess启动目标程序,再通过调试事件DEBUG_EVENT在调试循环中监控程序的行为.  (1)CreatProcess BOOL CreateProcess( LPCTSTR lpApplicationName, // 要创建的进程模块名 LPTSTR lpCommandLine, // 命令行字符串 LPSECURITY_ATTRIBUTES lpProcessAttributes, // 进程安全属性 LPSECURITY_ATTRIB…
在打开数据库的时候,突然出现异常错误,然后我去关闭sql server 服务,然后重启服务的时候,不能重启,出现以下错误 “请求失败或服务未及时响应.有关详细信息,请参见事件日志或其它适合的错误日志” 然后通过查看 Windows 系统日志, 发现以下错误提示消息: MSSQLSERVER 服务未能用当前配置的密码以 .\Administrator 登陆,因为以下错误:  登录失败: 未知的用户名或错误密码. 然后我想起这是由于我之前修改了 服务器的登录密码.所以出现这样的问题 解决方案: 1.…
异常概述 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络是否始终保持通畅等等.设计类型时要想好各种使用情况类型名称通常是名词,例如filestream或者string builder,然后要为类型定义属性.方法.事件等这些成员的定义方式(属性的数据类型.方法的参数.返回的值等)就是类型的编程接口,这些成员代表类本身或者类型实力能执行的行动,行动成员通常动词…
背景 mqtt的服务端ActiveMQ在windows上,多台PC机客户端不停地向MQ发送消息. 现象 观察MQ自己的日志data/activemq.log里显示,TCP链接皆异常断开.此时尝试从服务端ping其他客户端,发现皆无法ping通.可知服务端网卡必定故障无法正常运作. 定位思路 原有的组网采用多PC通过hub互联,工作方式上讲hub是广播模式,多PC大数据量发送必然引发广播风暴,使网卡超载运行直至异常. 改为百兆交换机后,交换机能够隔离冲突域,数据交互情况明显有所好转.但仍偶现网卡故…
WPF中实例化Com组件,调用组件的方法时报System.Windows.Forms.AxHost+InvalidActiveXStateException的异常 在wpf中封装Com组件时,调用组件的方法时抛出异常System.Windows.Forms.AxHost+InvalidActiveXStateException的异常. 通过网上查询发现,除了实例化com组件,还要将该对象进行初始化. 添加如下代码后 System.Windows.Controls.Grid CTSGrid = n…
Unrecognized Windows Sockets error: 0: JVM_Bind 异常解决办法 java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind 此异常的原因是服务器端口被占用 所以解决办法是: 1.可能是您现在用的tomcat的端口与您的另一个tomcat的端口,或者是数据库的端口相冲突.解决办法: 点击myeclipse控制台处的servers,然后右击tomcat图标,然后单击C…
转自:http://stackoverflow.com/questions/1293905/sha256cryptoserviceprovider-and-related-possible-to-use-on-winxp 最近在 Windows XP 下运行 WPF 应用时,发现闪退,查看日志是因为调用 SHA512CryptoServiceProvider 方法出现异常 PlatformNotSupportedException. 难道 XP 还不支持这个加密方法? 经搜索发现说是 .NET…
Windows服务安装异常:System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志.不可 访问的日志: Security 2种方法处理: 一.右键单击“以管理员身份运行”Visual Studio Command Prompt即可 二.以管理员身份运行vs,然后打开项目,再执行InstallService程序安装服务. 附:具体构建windows 服务,可以看看这篇文章:http://www.cnblogs.com/LoveJenny/arc…
以前用Windows Live Writer写日志都好好的,前几天用写完日志,点击发布,突然弹出意外错误:“WindowsLive.Writer.CoreServices.HttpRequestHelper”的类型初始值设定发生异常.不知道是什么问题,百度了好久也没有找到相似的问题及解决方法,于是卸载了重新装,还是出现同样的问题,如图: 今天看到一篇博客终于解决了.解决办法为: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Fip…
private void CopyAndOverwriteMap() { //IObjectCopy接口变量申明 IObjectCopy objectCopy = new ObjectCopyClass(); //要Copy的对象 object toCopyMap = m_mapControl.Map; //复制要复制的对象 object copiedMap = objectCopy.Copy(toCopyMap); //要复制到的文件 object toOverwriteMap = axPag…
java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind 此异常的原因是服务器端口被占用 所以解决办法是: 一:更改服务器的端口号: 二:关闭占用当前端口的进程 下边介绍第二种方法 1.首先进入命令行 查看端口是否被占用 使用命令: netstat -ano 我的服务器的端口是443 此端口已被PID为3432的进程占用 2.查看该PID为 3432 的进程 使用命令:tasklist|findstr "3…
在 Windows 10 中使用 Visual Studio 2013 Ultimate with Update 4 开发网站,9926 的时候还好好的,升到 10041 就不能调试了: “System.Runtime.InteropServices.SEHException”类型的未经处理的异常在 未知模块. 中发生 其他信息: 外部组件发生异常. 托管调试助手“FatalExecutionEngineError”在“C:\Program Files (x86)\IIS Express\iis…