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

PE导出表三表EAT ENT EIT 三表逻辑解析

目录

🧠 PE 导出表三表逻辑完全解析

📘 核心理解

🔍 逻辑拆解

① 函数地址表(EAT)

② 名称表(ENT)

③ 序号表(EIT)

④ 名字 → 序号 → 地址的完整路径

🎯 核心结论

🖇️ ASCII 流程图展示三表通讯逻辑

🧩 最终确认:三表关系完全清晰

✅ 修正关键点:

✅ 完整关系链:

✅ 判断逻辑 if (pEIT[index] == i) 的含义:

📊 可视化关系图(ASCII版)

🎯 完全吃透的总结


🧠 PE 导出表三表逻辑完全解析

📘 核心理解

序号(Ordinal)不是名称表的索引,而是连接名称表(ENT)和函数地址表(EAT)的桥梁。

三者关系可以总结为:

名称表 ENT[index] → 序号表 EIT[index] → 函数地址表 EAT[ordinal]

序号就是媒介,让名字和地址正确对应。


🔍 逻辑拆解

① 函数地址表(EAT)

  • 按序号排列

  • 每个序号对应一个函数地址

  • 表示:EAT[i]= 第 i 个序号对应的函数地址

② 名称表(ENT)

  • 按字母顺序排列函数名称

  • 不存序号,只存名字

  • 表示:ENT[index]= "Add" / "Sub" / "Mul" / ...

③ 序号表(EIT)

  • 连接名称表和地址表

  • 保存 ENT[index] 对应的序号(ordinal)

  • 表示:EIT[index]= 名称表对应的序号

④ 名字 → 序号 → 地址的完整路径

  1. 从名称表获取名字:ENT[index]

  2. 查序号表得到序号:EIT[index] = ordinal

  3. 用序号查地址表:EAT[ordinal]= 函数地址

逻辑链条清晰:

ENT[index] → EIT[index] = i → EAT[i]

也就是if (EIT[index] == i)判断的真正含义:

名称表的名字是否对应函数地址表第 i 项?如果是,找对了。


🎯 核心结论

  • EAT:序号 → 函数地址

  • ENT:字母序 → 函数名称

  • EIT:名字 → 序号

  • 序号是桥梁,三者通过序号正确关联

这个机制就是 PE 导出表运作的核心。


🖇️ 流程图展示三表通讯逻辑

┌───────────────┐ │ 名称表 ENT │ │ index = 0..n │ │ "Add" "Div" ..│ └──────┬────────┘ │ 通过 EIT[index] ▼ ┌───────────────┐ │ 序号表 EIT │ │ index = 0..n │ │ 0, 1, 3, ... │ └──────┬────────┘ │ 序号 i 对应地址 ▼ ┌───────────────┐ │ 函数地址表 EAT │ │ i = 0..n │ │ addr(Add) ... │ └───────────────┘
  • 每个名称通过 EIT 得到序号

  • 序号指向 EAT 中的实际函数地址

  • 判断公式if (EIT[index] == i)验证名称对应地址是否正确

三张表的关系直观化呈现:名称表 → 序号表 → 地址表







🧩 最终确认:三表关系完全清晰

✅ 修正关键点:

序号表(EIT)不是名称表的索引,而是名称表到序号的映射桥梁

✅ 完整关系链:
名称表 ENT[index] → 函数名称(如"Add") ↓ 通过 EIT[index] 获取序号 序号 i = EIT[index] ↓ 通过 EAT[i] 获取地址 函数地址 = EAT[i]
✅ 判断逻辑if (pEIT[index] == i)的含义:

"名称表中第index个名称对应的序号,是否等于函数地址表中的第i个序号?"

如果是,说明找到了名称表ENT[index]对应的函数地址EAT[i]。


📊 可视化关系图(ASCII版)

id: export-table-relationship name: PE导出表三表关系图 type: markdown content: |- # PE导出表三表关系示意图 ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 名称表 (ENT) │ │ 序号表 (EIT) │ │ 函数地址表 (EAT) │ ├─────────────────┤ ├─────────────────┤ ├─────────────────┤ │ index=0: "Add" │───→│ index=0: 2 │───→│ 序号=2: 0x1000 │ │ index=1: "Div" │───→│ index=1: 1 │───→│ 序号=1: 0x2000 │ │ index=2: "Mul" │───→│ index=2: 3 │───→│ 序号=3: 0x3000 │ │ index=3: "Sub" │───→│ index=3: 0 │───→│ 序号=0: 0x4000 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ ↑ ↓ ↓ │ 映射关系桥梁 地址按序号排列 │ (名称→序号) (序号→函数地址) │ 名称按字母序排列 ``` ## 🔄 查找流程示例:查找"Div"函数 1. 在ENT中找到"Div"位于index=1 2. 通过EIT[1]获取序号=1 3. 通过EAT[1]获取函数地址=0x2000 ## 🎯 核心机制 - **ENT**: 名称→索引(按字母序) - **EIT**: 索引→序号(映射桥梁) - **EAT**: 序号→地址(按序号排列)

🎯 完全吃透的总结

PE导出表通过序号表(EIT)作为媒介,将按字母序排列的名称表(ENT)与按序号排列的函数地址表(EAT)正确关联,实现了"名称→序号→地址"的完整映射链条。

这个机制完美解决了:

  • 名称查找效率(ENT按字母序)

  • 地址存储效率(EAT按序号紧凑排列)

  • 两者之间的正确映射(EIT作为桥梁)

最后这个点和免杀劫持hook以及shellcode 二进制漏洞 逆向相关看的明白就看看不明白就说明水平还不够哟

http://www.cnnetsun.cn/news/7756.html

相关文章:

  • YOLOv8-Ultralytics 系列文章目录
  • 自动化运维工程师之ansible启动rpcbind和nfs服务
  • 数字供应链系统哪个好?2025 供应链系统推荐排名来了,八大供应链系统
  • M.I.B.终极指南:解锁汽车娱乐系统的隐藏功能
  • 把 ABAP CDS 讲清楚:从 ABAP 7.40 SP05 的语义建模,到 SP08 的函数、参数化与扩展视图
  • 终极PHP兼容性检查工具:轻松应对版本迁移挑战
  • Kamailio usrloc 细节测试
  • 探索STM32单片机仿真温湿度采集控制系统
  • MediaPipe实时多模态感知:从单点检测到全身协同追踪的技术革命
  • SMDJ33A单向 TVS瞬态抑制二极管 :33V电压000W 浪涌,中压电路防护核心
  • MCP 2025量子编程认证重大升级(新增内容全曝光)
  • Bottles:让Windows软件在Linux上轻松运行的智能解决方案
  • 日志框架问答整理(吊打面试官)
  • 从零到安全工程师:2025年必备技能树详解(附实战学习蓝图)
  • Komikku:免费开源的Android漫画阅读器终极指南
  • 长耗时接口异步改造总结
  • 解码人类智慧密码——贾子五定律(Kucius Five Laws):贾子认知、历史、战略、军事、文明五定律
  • 启点创新智慧景区小程序系统,景区智能化售票系统,景区购票管理系统
  • 3种快速安装readr数据读取工具的方法:从入门到精通
  • 对比实测:传统vs自动化VMware安装,效率提升300%
  • 跨平台字体革命:PingFangSC字体包的终极解决方案
  • 14 类圣诞核心 SVG 交互方案拆解(附案例 + 资源)
  • 7个技巧轻松搞定Node.js版本升级:从16.x到20.x的无痛迁移指南
  • MCP SC-400配置避坑手册(一线专家亲授10大常见错误)
  • Ghost没落、同行消失,深度却靠国产系统翻盘?关键点不止一个!
  • 5分钟掌握PROPKA:蛋白质pKa预测的终极入门指南
  • dotNetFx40_Full_x86_x64:解决Windows开发环境配置难题的终极方案
  • 终极解决方案:如何快速解除Cursor试用限制
  • PMail个人邮件服务器:3步搭建私有邮箱的完整指南
  • 阿里自研Wan2.2-T2V-A14B如何实现720P高清视频生成?