PE文件解析-异常处理表与数字签名

本文详细介绍了PE文件中的异常处理表,包括其位置、结构和异常处理函数的详细信息。同时,探讨了数字签名的定位、作用,以及Authenticode的签名结构和验证软件完整性的功能。内容涵盖了Windows操作系统的不同版本。
摘要由CSDN通过智能技术生成

一、异常处理表

1.位置及概述

    PE文件头可选映像头中数据目录表的第4成员IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_DIRECTORY_ENTRY_EXCEPTION]指向异常处理表,它保存在PE文件中,通常在".pdata"区段。

    x86系统采用动态的方式构建SEH结构,相比而言x64系统下采用静态的方式处理SEH结构。

2.异常处理表结构

    数据目录表的第四个元素指向异常表,RVA指向的是一个IMAGE_IA64_RUNTIME_FUNCTION_ENTRY的结构体,其结构如下:

typedef struct _IMAGE_IA64_RUNTIME_FUNCTION_ENTRY {
    DWORD BeginAddress;      //与SEH相关代码的起始偏移地址
    DWORD EndAddress;        //与SEH相关代码的末尾偏移地址
    DWORD UnwindInfoAddress; //指向描述上面两个字段之间代码异常信息的UNWIND_INFO
} IMAGE_IA64_RUNTIME_FUNCTION_ENTRY, *PIMAGE_IA64_RUNTIME_FUNCTION_ENTRY;

    BeginAddress与EndAddress之间,是异常处理函数的内容。UnwindInfoAddress指向的位置是用来描述BeginAddress与EndAddress之间的代码异常属性信息的UNWIND_INFO。UNWIND_INFO也叫作异常展开信息,此结构用来描述堆栈指针的记录属性与寄存器中保存的地址属性,它的结构体如下:

struct _UNWIND_INFO {
   U
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值