当前位置: 首页 > news >正文

PE之代码解析异常表

PE之代码解析异常表
1)异常表
异常表(ExceptionTable,注意你拼写的Exection是笔误,正确为Exception)是PE(PortableExecutable)文件格式中用于存储结构化异常处理(SEH)和基于帧的异常处理(EH)相关信息的数据结构,是Windows系统处理程序运行时异常(如内存访问错误,除零错误等)的核心依据。


咱们来看下逆向破解中的典型场景:​
识别程序中的异常处理逻辑边界(比如壳通过异常表实现反调试,代码混淆);
定位恶意代码中隐藏的执行流(异常处理常被用作执行流跳转的后门);
修复脱壳后PE文件的异常表(避免程序运行时崩溃)。


2)解析异常表
解析异常表的核心目标是定位异常表在PE文件中的物理位置,解析表内每一条异常处理记录的结构,提取关键地址信息,最终还原程序的异常处理逻辑;异常表的核心定位逻辑为PE文件的异常表信息首先存储在可选头(OptionalHeader)的DataDirectory数组中,索引为IMAGE_DIRECTORY_ENTRY_EXCEPTION(数值为0x04),该位置会记录异常表的虚拟地址(VirtualAddress,VA,即异常表在内存中的起始地址)和大小(Size,即异常表的总字节数),解析时需先通过该索引找到异常表的VA和Size,再将VA转换为文件中的物理偏移(RawOffset),最终读取并解析表内数据。


3)程序开发流程
前期基本流程和导入表基本大差不差哦
1.文件读取:首先把要分析的EXE或DLL文件以二进制方式打开,将文件里所有内容读到内存里的一个临时区域(咱们叫它buf)。
2.定位DOS头:接着把这个buf转换成能识别PE文件开头DOS头的格式(PIMAGE_DOS_HEADER),校验DOS头的e_magic字段是否为IMAGE_DOS_SIGNATURE(0x5A4D,即"MZ"),确认是有效PE文件。
3.定位NT头:找到DOS头里的e_lfanew这个关键值,用它加上buf的起始位置定位到PE文件的核心NT头(PIMAGE_NT_HEADERS32/PIMAGE_NT_HEADERS64),校验NT头的Signature字段是否为IMAGE_NT_SIGNATURE(0x00004550,即"PE")。
4.区分PE位数:通过NT头中OptionalHeader.Magic字段判断PE文件是32位(IMAGE_NT_OPTIONAL_HDR32_MAGIC)还是64位(IMAGE_NT_OPTIONAL_HDR64_MAGIC)。
5.获取异常目录(ExceptionDirectory)
从NT头的OptionalHeader.DataDirectory数组中,根据IMAGE_DIRECTORY_ENTRY_EXCEPTION索引定位到异常目录结构体(PIMAGE_DATA_DIRECTORY):
64位PE文件使用pNt64->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXCEPTION]
32位PE文件使用pNt32->Optiona

http://www.jsqmd.com/news/249896/

相关文章:

  • 【无人机协同车辆】合作无人机-地面车辆包裹拾取的最优负载均衡策略以实现最短完成时间 附matlab代码
  • EDGE估计没有switch到frame的做法
  • 《提示工程架构师解析:游戏开发重视提示工程的战略意义》
  • JavaScript 定时器完全攻略
  • 【课程设计/毕业设计】基于SpringBoot的水族馆商品销售与经营管理系统商品资源管理(水族活体、器材、饲料分类,规格定价、库存预警、产地与养护说明)【附源码、数据库、万字文档】
  • Java毕设项目:基于SpringBoot的水族馆商品销售与经营管理系统(源码+文档,讲解、调试运行,定制等)
  • 【无人机三维路径规划】基于RRT路径规划+多机V 型编队跟随+动态障碍物避障+碰撞检测附Matlab代码
  • 【路径规划】基于RRT算法结合Dubins实现车辆路径规划附matlab代码
  • Java毕设选题推荐:基于SpringBoot的水族馆宠物鱼销售与经营管理系统基于SpringBoot的水族馆商品销售与经营管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • day132—链表—K个一组翻转链表(LeetCode-25)
  • Java计算机毕设之基于SpringBoot+vue的海洋馆商品销售与经营管理系统基于SpringBoot的水族馆商品销售与经营管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • Java毕设项目推荐-基于Java+SpringBoot+Vue的身体素质测评管理系统基于SpringBoot的学生身体素质测评管理系统【附源码+文档,调试定制服务】
  • Java毕设项目推荐-基于SpringBoot的水族馆线下门店与线上销售的一体化管理系统基于SpringBoot的水族馆商品销售与经营管理系统【附源码+文档,调试定制服务】
  • C/C++内存管理:从内存布局到malloc/free 与 new/delete 的深度解析
  • 初识Jmeter
  • C语言内存函数:介绍使用及其模拟实现
  • 技术资产管理:智能复用评估
  • 【计算机毕业设计案例】基于SpringBoot的大学生综合素质测评系统设计与实现基于SpringBoot的学生身体素质测评管理系统(程序+文档+讲解+定制)
  • 【计算机毕业设计案例】基于SpringBoot的水族馆鱼类商品销售与经营管理系统基于SpringBoot的水族馆商品销售与经营管理系统(程序+文档+讲解+定制)
  • 无线网络仿真:6G网络仿真_(19).6G网络仿真未来趋势
  • 无线网络仿真:6G网络仿真_(20).6G网络仿真实践项目
  • 智能编程平台:低代码开发实践
  • 无线网络仿真:Wi-Fi网络仿真_(3).仿真软件介绍与使用
  • 无线网络仿真:6G网络仿真_(15).6G网络仿真参数设置
  • 大数据浪潮下,ClickHouse的破局之道
  • 大数据建模中的向量化处理:SIMD指令优化计算
  • 别再重复造轮子!AI应用架构师:企业AI中台可复用组件库建设,附开发规范
  • 这3个内幕曝光,了解洁净室专用电话机的技术内核!
  • 【毕业设计】基于Java的学生身体素质测评管理系统基于SpringBoot的学生身体素质测评管理系统(源码+文档+远程调试,全bao定制等)
  • 计算机毕设 java 基于协同过滤算法的就业推荐系统的设计与实现 基于协同过滤算法的智能就业推荐平台 求职与企业招聘匹配系统