一、异常处理表
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 {
UBYTE Version:3;

本文详细介绍了PE文件中的异常处理表,包括其位置、结构和异常处理函数的详细信息。同时,探讨了数字签名的定位、作用,以及Authenticode的签名结构和验证软件完整性的功能。内容涵盖了Windows操作系统的不同版本。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



