_try_finally原理探究后续

入口程序的最后一道防线

这里调用mainCRTStartup(),然后调用入口程序

相当于这里才是一个进程开始执行的地方

这里有一个call调用,跟进去看看

发现有修改fs:[0]的操作,这里就相当于编译器为我们注册了一个异常处理函数

这里到kernel32.dll里面的BaseProcessStart里面看一下,这里有一个注册SEH异常处理函数的操作

线程启动的最后一道防线

可以发现线程也是从kernel32.dll开始的

然后跟进调用

可以发现还是注册了一个异常处理函数

还是去IDA里面看BaseThreadStart函数,发现也注册了一个SEH异常的函数

UnhandledExceptionFilter

相当于编译器为我们生成了一段伪代码

只有程序被调试时,才会存在未处理异常

UnhandledExceptionFilter的执行流程:

SetUnhandledExceptionFilter

如果没有通过SetUnhandledExceptionFilter注册异常处理函数,则程序崩溃

测试代码如下,我自己构造一个异常处理函数callback并用SetUnhandledExceptionFilter注册,构造一个除0异常,当没有被调试的时候就会调用callback处理异常,然后继续正常运行,如果被调试则不会修复异常,因为这是最后一道防线,就会直接退出,起到反调试的效果

直接启动可以正常运行

使用od打开则直接退出

KiUserExceptionDispatcher

只有当前程序处于调试的时候才可能产生未处理异常

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/220611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jsp 学科竞赛成绩管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 学科竞赛成绩管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysq…

Linux中的iptables

iptables 是一个用于配置 Linux 内核防火墙规则的命令行工具。它允许管理员定义和管理数据包过滤规则,以控制网络流量的流入和流出。 iptables 使用规则集来决定如何处理进入或离开系统的数据包。规则集由一系列规则组成,每个规则定义了一个匹配条件和一…

定制软件开发的 5 个挑战

对于大公司来说,定制软件开发就像是眼中钉。无论您是要创建内部使用的工具、自动化手动流程还是推出新产品,从头开始构建它历来都是昂贵且危险的。花钱购买领先的现成解决方案之一,却不得不花费更多的时间和金钱对其进行定制来完成工作&#…

Java数据结构篇——实现顺序表的增删查改

文章目录 1.线性表2. 顺序表2.1 顺序表结构2.2 实现顺序表接口2.3 打印顺序表2.2 实现新增元素2.3 实现查找元素2.3 获取pos位置的值2.4 删除元素2.5 获取顺序表的长度2.6 清空顺序表 3.代码在这 1.线性表 定义:线性表是 n 个具有相同特性的数据元素的有序序列。线…

大数据存储技术(1)—— Hadoop简介及安装配置

目录 一、Hadoop简介 (一)概念 (二)Hadoop发展历史 (三)Hadoop三大发行版本 (四)Hadoop的优势 二、Hadoop的组成 (一)Hadoop1.x和Hadoop2.x的区别​…

SSL通配符详解

通配符证书是一种特殊的SSL/TLS证书,它允许一个域名及其所有子域名使用相同的证书。这意味着,如果您有一个通配符证书,您可以为该证书中的任何子域名提供SSL/TLS加密,而无需为每个子域名单独购买和配置证书。 通配符证书使用通配…

苹果电脑双开

1.第一步:在应用程序中找到微信 复制一个副本出来 2.第二步:打开复制的《微信副本》 右键打开 – 显示包内容 3.第三步:Contents - info.plist 后右键 打开方式 选择 文本编辑 4.第四步:找到查找和替换 这一段com.tencent.xinWeChat 后面是修改 com.tenc…

第17节:Vue3 反应式代理与原始代理

在UniApp中使用Vue3框架时,你可以使用反应式代理与原始代理来处理一些复杂的数据操作。反应式代理可以帮助我们实现数据的双向绑定,而原始代理则可以让我们直接操作数据而无需担心响应性问题。 下面是一个示例,演示了如何在UniApp中使用Vue3…

数据库性能优化八大方案

毫不夸张的说咱们后端工程师,无论在哪家公司,呆在哪个团队,做哪个系统,遇到的第一个让人头疼的问题绝对是数据库性能问题。如果我们有一套成熟的方法论,能让大家快速、准确的去选择出合适的优化方案,我相信…

MySQL系列(十):主从架构

一:主从架构 常见的主从架构模式有四种: 一主多从架构:适用于读大于写的场景,采用多个从库来分担数据库系统的读压力。多主架构:适用于读写参半的场景,采用多个主库来承载数据库系统整体的读写压力。多主…

可视化 Java 项目

有一定规模的 IT 公司,只要几年,必然存在大量的代码,比如腾讯,2019 年一年增加 12.9 亿行代码,现在只会更多。不管是对于公司,还是对于个人,怎么低成本的了解这些代码的对应业务,所提…

Spring Boot统一功能处理(Spring拦截器)

为什么需要Spring拦截器 原生的Spring AOP实现统一拦截有两大难点,1.定义拦截的规则难写;2.在切面类中拿到HttpSession比较难。为此Spring官方提供了拦截器帮我们解决了上面痛点。 实现登入信息验证拦截器 实现HanderInterceptor接口重写preHeadler方…

【LeetCode刷题】--172.阶乘后的零

172.阶乘后的零 方法&#xff1a; class Solution {public int trailingZeroes(int n) {int ans 0;for(int i 5;i<n;i5){for(int x i; x % 50; x/5){ans;}}return ans;} }进一步优化&#xff1a; class Solution {public int trailingZeroes(int n) {int ans 0;while (n…

HTML选择题试题——附答案

单选题 HTML的缩写是什么&#xff1f; A) Hyper Tool Markup LanguageB) Hyperlinks and Text Markup LanguageC) Hyper Text Markup LanguageD) Home Tool Markup Language 下列哪个标签用于定义文档的主体内容&#xff1f; A) <head>B) <body>C) <title>D)…

【个人版】SpringBoot下Spring-Security核心概念解读【二】

Spring-Security HttpSecurity Spring-Security全局导读&#xff1a; 1、Security核心类设计 2、HttpSecurity结构和执行流程解读 3、Spring-Security个人落地篇 背景&#xff1a; Spring-Security框架的核心架构上一篇已经概述&#xff0c;展示其执行流程及逻辑&#xff0c;但…

音频筑基:信噪比SNR指标

音频筑基&#xff1a;信噪比SNR指标 SNR含义SNR实例 在分析音频信号中&#xff0c;信噪比是我们经常遇到的概念&#xff0c;这里谈谈自己的理解。 SNR含义 定义 SNR&#xff0c;Signal to Noise Ratio&#xff0c;信噪比&#xff0c;也常缩写为S/N 概念 顾名思义&#xff0…

SpringBoot 整合 ExcelEasy

ExcelEasy 是一个基于 Spring Boot 的 Excel 导入导出框架&#xff0c;它提供了简单易用的 API 来操作 Excel 文件&#xff0c;可以轻松实现 Excel 的导入导出。 1. 添加依赖 在 pom.xml 文件中添加 ExcelEasy 的依赖&#xff1a; <dependency><groupId>com.ali…

【期末考复习向】transformer的运作机制

1.transformer的encoder运作 transformer的encoder部分包括了输入和处理2大部分。首先是输入部分inputs&#xff0c;这里初始的inputs是采用独热向量进行表示的&#xff0c;随后经过word2vec等操作把独热向量&#xff08;采用独热向量的好处就是可向量是正交的&#xff0c;可以…

【华为OD】双十一众多商品进行打折销售,小明想购买自己心仪的一些物品,但由于受购买资金限制,所以他决定从众多心仪商品中购买三件

题目描述:双十一众多商品进行打折销售,小明想购买自己心仪的一些物品,但由于受购买资金限制,所以他决定从众多心仪商品中购买三件,而且想尽可能的花完资金,现在请你设计一个程序帮助小明计算尽可能花费的最大资金数额。输入描述:输入第一行为一维整型数组M,数组长度小于…

Qt 面试指南

一、c基础知识 1、进程和线程的同步方式 进程&#xff1a;1&#xff09;管道&#xff0c;是内核里的一串缓存 2&#xff09;消息队列 3&#xff09;共享内存 4&#xff09;信号量机制 5&#xff09;信号 6&#xff09;socket 线程&#xff1a;1&#xff09;等待通知机制 2&…