win脱壳2 -- 寻找原始OEP
目录脱壳寻找原始程序 OEPOEP Original Entry Point首先要运行到壳的节区位置为什么要先运行到壳的节区位置​编辑如何确认程序是加壳的定位壳的程序入口点EP程序运行起来以后代码就吐出来了拿到原始程序的 OEP程序入口点寻找真实 OEP 地址的方法论下硬件访问断点具体操作步骤找到 OEP 之后——脱壳的后半场常见坑与进阶点脱壳流程速查图脱壳寻找原始程序 OEPOEP Original Entry Point首先要运行到壳的节区位置为什么要先运行到壳的节区位置加壳后磁盘上 PE 文件的原始代码节区.text / UPX0里存放的是加密/压缩后的数据不是可读指令。只有壳的 stub 代码位于壳节区是明文指令可以执行加壳PE的节区磁盘视角 ┌──────────────────────────────┐ │ 节区表 │ ├──────────────────────────────┤ │ 壳节区UPX1 / .aspack... │ ← 明文指令壳stub可执行 ├──────────────────────────────┤ │ 原始代码节区.text / UPX0 │ ← 加密/压缩数据静态不可读 └──────────────────────────────┘如果程序还没运行到壳的节区stub 未执行原始代码节区仍然处于加密/混淆状态——此时看到的全是乱码数据不是程序原本的指令。所以脱壳第一步永远是让壳代码先跑起来运行到壳的节区位置让壳自己把原始代码吐出来。程序被加载后OS 会跳转到入口点EP当前指向壳节区从这里开始运行的就是壳的 stub 代码。如何确认程序是加壳的用 DIEDetect It Easy识别壳的类型UPX / ASPack / Themida…观察节区名UPX0/UPX1、.aspack、.petite 等明显不是正常编译器的节区名看入口点正常程序 EP 指向 .text 节区加壳程序 EP 指向壳节区如 UPX1定位壳的程序入口点EP壳的入口点 加壳后 PE 的入口点OS 加载后执行的第一条指令。动态定位x64dbg / OllyDbg 载入程序后默认就停在 EP模块入口。静态定位解析 PE 头读取AddressOfEntryPoint字段或用 IDA 打开看入口处指令特征辅助判断壳类型。壳存在的标志性特征——入口处保存现场pushad ; 保存 8 个通用寄存器现场保护 pushfd ; 保存标志位寄存器 FLAGS call xxxxxxxx ; 调用壳的核心代码 ... ; 壳核心工作解密、解压、重定位、重建IAT popfd ; 恢复标志位 popad ; 恢复通用寄存器 jmp OEP ; 跳回原始入口点 ← 最终目标看到 pushad/pushfd 就说明程序被加壳了——正常编译的代码开头是push ebp; mov ebp,esp函数序言不会用 pushad/pushfd 保存全部寄存器。执行策略运行程序执行壳代码。遇到call壳的核心函数必须用F7步入进入执行——壳的核心工作解密、重建 IAT都在这个 call 里F8 跳过的话壳没执行原始代码不会还原。注意pushad/pushfd 是 32 位指令。64 位程序没有 pushad/pushfd改为逐条 push 寄存器ESP 定律不能直接用替代方案见文末补充。程序运行起来以后代码就吐出来了启动程序后壳 stub 完成解压/解密原始代码在内存中还原像从压缩包里解出来。此时进程内存 还原的原始代码 壳重建好的 IAT——已经是可以分析的形态。但不能直接 dump必须先把入口点改到原始程序的 OEP 再 dump。在壳入口 dump 的话文件运行时又会执行壳代码甚至再次解压出错等于没脱。dump 的正确时机让程序停在 OEP而不是继续往下跑。此时内存状态最干净——原始代码已解密、IAT 已重建、原始程序自身的初始化还没执行无副作用。拿到原始程序的 OEP程序入口点在壳的状态下通过分析找到原始程序入口点 OEP 的地址。把入口点修改到原始 OEP 位置然后 dump 出内存镜像→ 脱壳成功。脱壳本质让壳自己完成解压在它跳向 OEP 的那一刻截停进程把运行中的内存镜像保存成文件。寻找真实 OEP 地址的方法论调试加壳 PE 的完整思路用 x64dbg 加载加壳 PE停在壳 EP。F7 单步步入执行壳代码。此时看到的是壳的解密循环不是原始代码——不用分析它继续执行。运行完壳的代码解压结束原始代码吐出。寻找 OEP观察壳收尾的地方恢复现场 → 跳转把入口点定位到原始位置。壳 stub 的完整生命周期关键模型pushad ; ① 保存八大寄存器 pushfd ; ② 保存标志位寄存器 call 壳核心函数 ; ③ 执行壳代码解密、重定位、重建IAT——壳的正事 ... ; 中间过程不用逐条分析 popfd / popad ; ④ 恢复现场 ← 壳寿终正寝的信号 jmp OEP ; ⑤ 跳转原始入口点 ← 要抓的就是这条跳转方法论核心ESP 定律的变体前两行pushad / pushfd 保存环境。执行壳代码忽略中间过程。重点监控 popad/popfd对 pushad/pushfd 压栈的地址下一个访问类型的硬件断点观察它什么时候被 pop 出来。断点命中pop 发生→ 壳已运行完毕 →pop 指令的下一条或附近就是跳向 OEP 的跳转跳转目标就是 OEP 的真实位置。原理栈上压入的寄存器数据只有 popad 时才会被再次访问。硬件访问断点 在栈上放陷阱壳一收尾必然踩中。下硬件访问断点具体操作步骤操作流程x64dbg 为例1. 停在壳入口 EPF8 单步执行完 pushad让 ESP 指向压栈后的栈顶 ※ 必须在 pushad 执行完之后再对 ESP 下断断点地址才正确 2. 右键当前 ESP 值寄存器窗口→ 断点 → 硬件访问断点Access ※ 断点类型选访问而非执行——要等 pop 读栈时命中 3. F9 运行 4. 断点命中 → 停在 popad/popfd 附近 → 壳运行完毕 → 找到程序入口点0019FF50 46 02 00 00 34 A0 47 00 34 A0 47 00 80 FF 19 00 F...4.G.4.G...命中后的操作断下后我们就找到了popadpop 的位置。下一行就能看到跳转指令jmp 地址或jmp eax这类间接跳转——这就是壳跳回原始代码的那一跳。用F7 跟进这条 jumpjmp eax是间接跳转eax 由壳动态算出F7 跟进后才会显示真实地址。最终到达原始程序的入口点 OEP。OEP 的验证特征怎么确认真的找到了跳转目标之后是函数序言push ebp; mov ebp,esp32位或sub rsp, xx64位代码呈线性结构正常函数调用不再有解密循环后续 dump 修复后DIE 能识别出原始编译器特征找到 OEP 之后——脱壳的后半场找到 OEP ≠ 脱壳完成。dump 之后必须修复 IAT否则脱壳文件无法运行。1. 停在 OEP不要 F9 继续运行原始代码 2. 打开 Scylla 插件x64dbg 自带/ ImportREC 3. 填入 OEP 的 RVAOEP地址 − 模块基址 4. IAT Autosearch → Get Imports确认导入函数列表正确 5. Dump保存内存镜像为文件 6. Fix Dump修复 IAT / 重定位表→ 得到可运行的脱壳 PE为什么必须修复壳在运行时才通过 LoadLibrary / GetProcAddress 动态重建 IATdump 出来的是运行时状态不修复的话文件脱离调试器重新加载时没有这些导入信息直接崩。验证脱壳成功脱壳文件独立运行行为与原文件一致 DIE 不再显示壳名、能识别编译器特征。常见坑与进阶点pushad 只存在于 32 位x64 没有 pushad/pushfdESP 定律不能直接用。64 位脱壳改用对原始代码节区下内存访问断点或监控ret跳到 .text 区的那一跳。硬件断点数量有限x86/x64 只有 4 个调试寄存器DR0~DR3最多同时 4 个硬件断点。反调试壳壳会在解压前检测调试器IsDebuggerPresent / 时间差检测被检测到会走假流程解压垃圾数据。对策ScyllaHide 插件一键绕过常见反调试。F7 与 F8 的选择call壳核心函数必须 F7进入执行壳的解密循环用 F7 逐条走太慢可配合 F4运行到光标处或条件断点跳过循环。花指令 / 假跳转强壳会在跳 OEP 前插入垃圾指令junk看到多个连续跳转时跟着实际执行的走最终以目标处是函数序言为判定标准。间接跳转壳常用jmp eax / jmp [esp]动态跳转必须先 F7 跟进才能看到真正的 OEP 地址。自动化框架对应你笔记里的写壳脱壳框架寻找OEP可用 x64dbg 脚本scriptdll、x64dbgpyPython API或 Scylla 的自动化接口。框架流程 定位 EP → 执行 pushad 后对 ESP 下硬件断 → 运行断下 → 识别 popad 后第一条跳转 → 解析目标地址 → dump。壳的变体越多识别规则就要越灵活。脱壳流程速查图加载加壳PE停在壳EP │ ▼ F8 执行 pushad → 对 ESP 下硬件访问断点 │ ▼ F9 运行 → 断点命中popad/popfd处→ 壳运行完毕 │ ▼ 向下找跳转指令jmp / jmp eax→ F7 跟进 │ ▼ 到达 OEP函数序言特征→ 记下地址 │ ▼ Scylla填 OEP RVA → 搜索 IAT → Dump → Fix Dump │ ▼ 脱壳完成 → DIE 验证壳名消失编译器特征出现

相关新闻

学院网站建设流程全解析:从需求调研到上线运维的每一步

学院网站建设流程全解析:从需求调研到上线运维的每一步

做教育行业的网站,和做普通企业官网完全是两码事。很多同行或者客户在刚接触这个项目的时候,往往觉得:“不就是找个模板套一下,上传点新闻图片吗?” 这种想法太天真了。如果你真的这么想,那最后做出来的东西,大概率是那种十年前的产物,不仅丑,而且难用,更别提什么用户…

2026/8/5 11:55:20 阅读更多 →
嵌入式开发调试工具全解析:ST-LINK、J-LINK、SWD与JTAG实战指南

嵌入式开发调试工具全解析:ST-LINK、J-LINK、SWD与JTAG实战指南

1. 项目概述:从“串口”的常见误解说起 刚接触嵌入式开发的朋友,尤其是从Arduino、ESP8266这类开发板入门的,常常会把“串口调试”和“程序下载”混为一谈。我最初也犯过这个迷糊,以为插上一根USB线,既能打印日志又能烧…

2026/8/5 11:55:20 阅读更多 →
风储联合系统深度调峰模型与CPLEX求解实践

风储联合系统深度调峰模型与CPLEX求解实践

1. 风储深度调峰模型的技术背景与挑战在新能源电力系统快速发展的今天,风电并网规模不断扩大,但其固有的波动性和间歇性给电网稳定运行带来了严峻挑战。2023年某省级电网数据显示,风电瞬时功率波动最大可达装机容量的40%,这直接导…

2026/8/5 11:55:20 阅读更多 →

最新新闻

WebODM完全指南:如何用开源软件打造专业级无人机图像处理平台

WebODM完全指南:如何用开源软件打造专业级无人机图像处理平台

WebODM完全指南:如何用开源软件打造专业级无人机图像处理平台 【免费下载链接】WebODM User-friendly, commercial-grade software for processing aerial imagery. ✈️ Download it for free! 项目地址: https://gitcode.com/gh_mirrors/we/WebODM 无人机技…

2026/8/5 15:44:04 阅读更多 →
生命涌现的小龙虾技能之【Fish Flashing  Scraping Detection (Ectoparasite Warning) | 爬宠体温调节行为识别(晒点/躲避)】简介

生命涌现的小龙虾技能之【Fish Flashing Scraping Detection (Ectoparasite Warning) | 爬宠体温调节行为识别(晒点/躲避)】简介

🦎 Reptile Thermoregulation Behavior (Basking / Hiding) | 爬宠体温调节行为识别(晒点/躲避) 智能分析中枢 图片/视频智能分析 结构化报告 历史报告云端查询 🧭 技能概览 | Overview 模块内容🏷️ 技能名称爬宠…

2026/8/5 15:44:04 阅读更多 →
戴森球计划工厂蓝图终极指南:3000+优化方案助力星际工厂建设

戴森球计划工厂蓝图终极指南:3000+优化方案助力星际工厂建设

戴森球计划工厂蓝图终极指南:3000优化方案助力星际工厂建设 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints戴森球计划蓝图库为你提供了从基础…

2026/8/5 15:44:04 阅读更多 →
如何快速掌握QR码修复:面向初学者的完整工具包指南

如何快速掌握QR码修复:面向初学者的完整工具包指南

如何快速掌握QR码修复:面向初学者的完整工具包指南 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你是否曾遇到过打印模糊的二维码无法扫描?或者精心设计的二维码因部…

2026/8/5 15:44:04 阅读更多 →
FIFA 23生涯模式终极改造指南:免费开源工具让你的足球经理梦想成真

FIFA 23生涯模式终极改造指南:免费开源工具让你的足球经理梦想成真

FIFA 23生涯模式终极改造指南:免费开源工具让你的足球经理梦想成真 【免费下载链接】FIFA-23-Live-Editor FIFA 23 Live Editor 项目地址: https://gitcode.com/gh_mirrors/fi/FIFA-23-Live-Editor 还在为FIFA 23生涯模式中球员能力不足而烦恼?想…

2026/8/5 15:44:03 阅读更多 →
esp32-ai项目实战:基于TinyStories模型的故事生成器开发

esp32-ai项目实战:基于TinyStories模型的故事生成器开发

esp32-ai项目实战:基于TinyStories模型的故事生成器开发 【免费下载链接】esp32-ai 项目地址: https://gitcode.com/gh_mirrors/esp/esp32-ai esp32-ai是一款基于ESP32-S3芯片的AI项目,它集成了TinyStories模型,能够在嵌入式设备上实…

2026/8/5 15:43:03 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →