后方格智能化观察网
首页 > 智能硬件 > SEH的奇妙世界深度解析安全编程中的异常处理

SEH的奇妙世界深度解析安全编程中的异常处理

SEH的奇妙世界:深度解析安全编程中的异常处理

SEH的基本概念与工作原理

SEH(Structured Exception Handling)是一种在Windows操作系统中使用的异常处理机制,它允许程序员通过try-catch语句来捕获和处理运行时错误,如访问-violation、integer division by zero等。SEH主要由两个结构体组成:EXCEPTION_RECORD和CONTEXT,这些结构体包含了异常发生时的一系列信息,例如异常代码、指向当前执行指令的指针以及调用堆栈帧等。

SEH过渡记录(SEH Kempston)

在Windows中,函数可以嵌套地调用其他函数,并且每个函数都有自己的局部变量存储空间。当一个函数抛出一个未被catch到的异常时,该异常会沿着当前调用的链表向上传递直到找到合适的catch块。这种机制称为SEH Kempston,因为它类似于Kempston railway station上的列车从站间相互连接并最终抵达目的地。这一过程是通过设置正确的FPTR_DATA来实现,每个线程都维护了一个链表,其中包含所有可能会捕获其下游任何线程产生的非同步异步C++例外点。

异常逃逸分析

异常逃逸分析是一种静态分析技术,它能够帮助开发者了解哪些对象可能会“逃逸”出某个方法或构造器,并因此需要特殊对待。在C#中,对象通常不会直接“逃逸”,因为它们总是在垃圾回收器管理之下。但在C++或者COM接口中,如果没有正确地释放资源,那么内存泄漏就很容易发生。为了防止这样的情况,我们需要确保当我们抛出或传递控制权给另一个线程时,我们已经清理了所有不再需要的地方。

SEH与RtlRaiseException()

RtlRaiseException是一个低级API,可以用来制造任意类型和代码值的一个硬件生成特权级别抛出的无效参数状态条件码及有效地址单元保护违规事件。如果你想模拟硬件引发的一些特定类型的问题,比如页面故障,你可以利用这个功能。例如,如果你想要测试你的应用程序如何响应虚拟内存访问问题,你可以调用RtlRaiseException以触发此类错误,然后观察你的应用程序是如何反应并修复这个问题。

使用SEh进行逆向工程

反汇编师经常使用SEh作为一种手段去跟踪和理解软件行为。在逆向工程领域,反汇编工具通常会提供一些额外的手段来获取关于进程执行路径上各个点的情况信息。这包括但不限于能否跳转到某处、是否能够继续执行、是否存在可控输入等,以便更好地理解目标软件内部工作原理。此外,由于反汇编工具本身就是基于CPU指令集,所以他们必须知道CPU寄存器内容,以及目前正在执行什么样的代码,而这些信息正是靠exception handling 来获取。

标签:

猜你喜欢

智能手机硬件 华为发布两款全...
在近日举行的华为新品发布会上,科技界和消费者们都关注着一件大事:华为宣布推出两款全闪存新手机。这对于追求极致性能和延长设备寿命的用户来说,无疑是一个令人振...
智能手机硬件 金沙黑花岗石是...
大家知道,在建筑装饰当中,各种的石材都是有的,花岗石是其中很受欢迎的一种,而今天要给大家介绍的又是这种石材中的一个分类,那就是金沙黑,可能多数人对此不了解...
智能手机硬件 芯片解密新纪元...
随着技术的飞速发展,芯片在现代社会扮演了越来越重要的角色。从智能手机到超级计算机,从汽车电子设备到医疗保健系统,无处不在的芯片背后隐藏着复杂而神秘的世界—...
智能手机硬件 铺塑胶地板的步...
地板在装修 中可以说是不可缺少的一种材料,市场上地板的种类也是较为多,有所不同的地板它铺贴的区域也是不尽相同的,坚信大多人对这个并不是很理解。下面就让小编...

强力推荐