【逆向】PE 解析器 / 加壳器 + 加壳步骤 + 手动脱壳思路

一、PE 解析器是干什么的?

PE解析器就是手动解析PE文件结构的工具/代码,用于:

  • 读取 DOS 头、NT 头、区段表、IAT/EAT、重定位表
  • 获取入口点、基址、内存偏移、文件偏移转换
  • 分析导入表、导出表、节属性
  • 为加壳、脱壳、Patch、逆向做基础支撑

核心能力:RVA ↔ FOA 转换(逆向必备)


二、加壳器的核心作用

  • 压缩/加密程序代码与数据
  • 隐藏原始代码、防止直接逆向
  • 反调试、防Dump、防内存抓取
  • 保护入口点、IAT、资源

三、加壳的4个关键步骤(必背)

1. 保存原始入口点(OEP)

  • 读取原程序 AddressOfEntryPoint
  • 加密保存到壳的区段或全局变量
  • 程序执行完壳后跳回OEP才真正跑原代码

2. 区段加密

  • 遍历 .text / .data 等敏感区段
  • 用 AES / XOR / RC4 等加密区段数据
  • 修改区段属性为可写,方便运行时解密
  • 加壳后直接看内存是乱码

3. 基址重定位修复

  • 若镜像基址被占用,Windows会自动重定位
  • 壳必须在解密后、跳回OEP前修复重定位表
  • 否则程序直接崩溃

4. 构建壳入口 & 写入新EP

  • 添加新的壳区段(如 .pack / .sac
  • 写入壳代码(初始化→解密→修复重定位→跳OEP)
  • 将NT头的EP改为壳入口地址

四、手动脱壳的核心思路(面试高频)

手动脱壳就是一句话:
找到 OEP → Dump内存 → 修复IAT → 修复重定位 → 保存正常PE

1. 找 OEP(最关键)

  • 单步跟踪壳代码,找 jmp / call 跳向原始程序
  • 观察内存解密完成、重定位修复完成的时机
  • 利用 ESP 定律、内存访问断点快速定位
  • 看区段属性变化:代码从不可执行 → 可执行

2. 内存Dump

  • 在 OEP 位置把整个进程内存Dump出来
  • 此时代码已解密、区段正常

3. 修复 IAT

  • 壳通常会加密/混淆IAT
  • 用 Import Recoder 等工具重建导入表
  • 修复无效函数指针

4. 修复重定位 & 保存

  • 修复重定位表,保证在任意基址都能运行
  • 保存为可直接运行的无壳PE

五、总结

加壳就是保存OEP → 加密区段 → 修复重定位 → 替换EP;脱壳就是找OEP → Dump内存 → 修复IAT → 修复重定位。


相关推荐
点亮~黑夜1 小时前
远程连接浏览无桌面服务器上的图片
windows·软件构建
Albart5751 小时前
Docker Desktop 增量更新失败终极排查:Failed to apply delta update 反复回滚怎么办?
windows·docker·容器·docker部署大模型
Patrick在香港2 小时前
Claude + Python 数据管道:一次字段改名,786 行历史数据被静默重写
开发语言·windows·python·claude·数据工程·数据校验·数据管道
Tiny2142 小时前
解决VMware中win10虚拟机无法上网
网络·windows·vmware
tryxr3 小时前
Chat2Excel 文件服务模块剩余功能开发
java·服务器·windows·java项目·文件服务
kakakahahahaha3 小时前
Windows DRIVER_IRQL_NOT_LESS_OR_EQUAL NETIO.SYS 蓝屏排查流程
windows·电脑·笔记本电脑·内容运营·软件需求
kakakahahahaha17 小时前
Windows笔记本重装系统的4种路径和风险边界
windows·电脑·笔记本电脑·内容运营·软件需求·重装系统
自动化监测Learner20 小时前
Windows 自带搜索太慢?Everything 安装与使用指南,全盘文件秒搜
windows·everything
天机玄正1 天前
云运维高阶二:CLI 调用 API (白名单追随)
windows·云原生
您^_^1 天前
DeepSeek-Harness v0.1.5-alpha.1更新后旧会话打不开?5 步抢救 8MB 会话照抄
人工智能·windows·个人开发·deepseek v4 pro·deepseekharness