吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1461|回复: 16
上一主题 下一主题
收起左侧

[原创] 实战ESP定律手工脱壳MPRESS壳

  [复制链接]
跳转到指定楼层
楼主
xygzxygz 发表于 2026-3-30 10:49 回帖奖励
本帖最后由 xygzxygz 于 2026-3-30 11:17 编辑

首先说明,本人小白,注册吾爱半月,半月内认真学习了《零基础新手破解学习》视频教程和站内前辈多篇技术文章,产生了亲手尝试脱壳的冲动,于是就有了如下经历,文章中参考了站内多个前辈的经验,在此一并谢过。
错误在此难免,请各位前辈批评指正,谢谢!
下面正式开始:
一、用到的工具:
1exeinfope0.0.9.5
2吾爱破解专用版OllyDbg
3LorePE
4ImportREConstructor
5、手头常用的一款工具(改名为wapj.exe
二、具体操作
第一步:查壳打开exeinfope0.0.9.5,打开或把wapj.exe拖到程序内,显示是MPRESS壳,如下图:


第二步:脱壳分析
启动吾爱破解专用版Ollydbg,把wapj.exe拖到程序内,提示程序被压缩、加密,问是否进行分析,这里选“否”:

入程序后停到如下画面,这里我们采用ESP定律”脱壳,按F8单步步过后,寄存器窗口只有EIPESP显示为红色,也就是说只有这两个寄存器的值被改变了,汇编代码窗口看到第一句执行的代码为pushad,意思是将所有32位寄存器压入堆栈,方便以后调用,因为堆栈平衡的缘故,随后在到达OEP之前肯定会使用popad将所有32位寄存器释放出栈,比较两次寄存器的内容,如果一致,那我们就找到了OEP,即程序开始执行的位置。因为popad出栈的时候肯定要访问到ESP现在所记录的这个位置,所以我们只要对这个位置的数据下一个硬件访问断点,就可以找到对应的popad的位置,从而找到OEP,于是在命令行输入:dd ESP记录的地址,回车:

回车后,数据区地址会停到ESP内记录的地址位置,这里是0012FFA4,选中这一行右键——断点——硬件写入——Dword,这样一来就在这个位置下了一个硬件断点:

检查断点是否下的成功,如下图,成功。

点击运行或按F9,程序运行后会停到我们下断点的地方,这里是一个大的跳转,上面是popad,下一步极有可能就是OEP

F8单步步过。把这里寄存器的值与我们第三张图寄存器的值比较,完全一致,因此现在就是OEP的位置:

到这一步后,我们需要删除前面下的硬件断点,防止下面的操作引起不要的麻烦。
第三步:脱壳
方法一:dump反汇编窗口点右键OllyDump——脱壳在当前调试进程,在弹出的窗口中点“脱壳”,为脱壳后的程序起个文件名,保存,等待保存完成即可。这里请记住修正后的入口点地址21BF92,随后要用到。如下图:

方法二:LordPEOD仍然停到dump法停到的位置(程序开始位置),打开LordPE程序,左上框找到wapj.exe程序,点右键——完整保存,起个文件名保存即可。

说明:1dump法保存的脱壳后的程序在WINXP下可执行,但到了WIN10WIN11下执行无反应,Hmily老师说“可能是aslr的问题,重定位没修复,这个可能性最大,其次可能iat没修复好”,后找到CFF_Explorer等工具,均提示无aslr,不存在重新定位问题。通过iat修复也没修复成功。
2LordPE法保存的脱壳后的程序运行会出现如下图错误提示,通过IAT修复后所有平台均可执行,脱壳成功。

第四步:为ImportREConstructor修复做准备,查找IAT(导入地址表)的首地址和大小。
重新返回我们的OD反汇编窗口点右键查找——二进制字串,HEX十六进制框中输入特征码FF15进行查找。

选中找到的FF15这行,右键——数据窗口中跟随——内存地址,左下框就会跳到这个地址。

这时我们来到数据窗口,通过鼠标往上翻,一直翻到数值出现好多0的地方,记住有数值的第一行的地址,这里是0063F000,那么我们的RVA就是0063F000 - 基址,在这里,我们的基址为00400000,所以得出RVA0063F000 --00400000=0023F000在这里注意的是:如果我们数据区显示的是十六进制数值,需要在数据区内点右键——长型——地址,改为显示长型地址,否则看不到一堆0如下图:

下面我们找大小。还是上图,通过鼠标往下翻,一直翻到API调用最后一个的位置,记住最后一行的地址,这里是006F7E8,那我们的大小就是调用API最后一个地址-开始的地址,即:006F7E8-0063F000=7E8。

有了OEP入口点地址0021BF92dump法脱壳时有记录),IAT(导入地址表)的首地址(RVA地址)0023F000及大小7E8,我们就可以对脱壳后的程序进行修正了。
第五步:利用ImportREConstructor修正脱壳后的程序
OD仍然停到脱壳时停到的位置(程序开始位置),打开ImportREConstructor程序,最上方选择正在脱壳的程序名称,输入前面找到的OEPRAV和大小,点获取导入表,如下图:

获取到导入表后,先点击“显示无效的”按钮,选中无效的DLL右键——删除指针,删除掉无用的DLL最后按修正转储,选择LordPE法保存的脱壳后的程序名称,打开即可修正。

OK!程序完美脱壳,运行一切正常。





免费评分

参与人数 10吾爱币 +15 热心值 +9 收起 理由
yixiang666 + 1 + 1 我很赞同!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
XXTK + 1 + 1 很详细
gzsklsskszngc + 1 + 1 我很赞同!
桃白白123 + 1 用心讨论,共获提升!
liyitong + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
小菜鸟一枚 + 1 + 1 楼主加油,我也是从论坛脱壳开始学的
Eddy + 1 我很赞同!
woshixiaohaige + 1 + 1 我很赞同!
max2012 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
kongkong1225 发表于 2026-3-31 08:50
教程写的超级详细,看的出来写的很用心,牛!赞!比我有耐心,一直想学脱壳,但是就是没有耐心学下去。继续加油。
3#
byh3025 发表于 2026-3-30 16:08
4#
 楼主| xygzxygz 发表于 2026-3-30 19:13 |楼主
5#
不苦小和尚 发表于 2026-3-30 20:03
试试看看效果怎么样
6#
763221847 发表于 2026-3-30 20:35
测试一下!!
7#
wdongdt 发表于 2026-3-30 21:00
好详细,好教程
8#
 楼主| xygzxygz 发表于 2026-3-31 12:11 |楼主
kongkong1225 发表于 2026-3-31 08:50
教程写的超级详细,看的出来写的很用心,牛!赞!比我有耐心,一直想学脱壳,但是就是没有耐心学下去。继续 ...

谢谢鼓励
9#
桃白白123 发表于 2026-3-31 17:42
教程很用心,笔芯
10#
shsww 发表于 2026-3-31 18:56
向老师学习!      
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-5-24 17:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表