news 2026/8/7 23:37:22

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 二进制漏洞 逆向相关看的明白就看看不明白就说明水平还不够哟

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 17:46:47

YOLOv8-Ultralytics 系列文章目录

YOLOv8-Ultralytics 系列文章目录 文章目录YOLOv8-Ultralytics 系列文章目录前言YOLOv8-Ultralytics 概述核心定位与优势核心技术架构YOLOv8-Ultralytics 源码讲解目标检测部分总结前言 YOLOv8是由Ultralytics公司(创始人也是YOLO系列核心作者Joseph Redmon的合作者…

作者头像 李华
网站建设 2026/8/7 23:09:30

自动化运维工程师之ansible启动rpcbind和nfs服务

通过 systemd 模块分别启动 rpcbind 和 nfs 服务,并设置它们为开机自启,是 NFS 服务部署中启动相关服务的典型配置。下面我会逐部分解析代码的含义、作用以及关键细节。 一、代码整体功能总结 这段代码包含两个独立的 systemd 模块任务,依次完…

作者头像 李华
网站建设 2026/8/7 15:25:46

数字供应链系统哪个好?2025 供应链系统推荐排名来了,八大供应链系统

当数字化转型从“可选项”变为“必选项”,S2B2B供应链系统已成为企业重构供应链竞争力的核心工具。无论是解决传统批发企业“订单传递慢、库存不清”的沉疴,还是支撑新兴跨境商家“多渠道协同、全链路合规”的需求,一款高效的供应链系统都能让…

作者头像 李华
网站建设 2026/8/7 17:38:28

M.I.B.终极指南:解锁汽车娱乐系统的隐藏功能

你是否曾经对车载系统的功能限制感到困扰?为什么高端汽车的原厂娱乐系统总是缺少你想要的功能?如果你的车辆使用的是Harman MHI2或MHIG系列娱乐系统,那么M.I.B.就是你的完美解决方案。这个开源工具就像一个汽车系统的"多功能工具"&…

作者头像 李华
网站建设 2026/8/7 2:43:17

终极PHP兼容性检查工具:轻松应对版本迁移挑战

终极PHP兼容性检查工具:轻松应对版本迁移挑战 【免费下载链接】PHPCompatibility PHPCompatibility/PHPCompatibility: PHPCompatibility是一个针对PHP代码进行兼容性检查的Composer库,主要用于PHP版本迁移时确保现有代码能够适应新版本的PHP语言特性&am…

作者头像 李华