吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2421|回复: 19
收起左侧

[分享] 记一次upx脱壳

[复制链接]
tie1zhu 发表于 2025-12-13 00:59
本帖最后由 tie1zhu 于 2026-1-13 23:54 编辑

记一次upx脱壳我学完x86汇编、PE文件格式,新发现一个叫【壳】的东西,这才知道还有 加壳/脱壳 这么一回事,写个帖子记录一下。前置知识:
  • 《C++反汇编与逆向分析技术揭秘》钱林松
  • 《Windows环境下32位汇编语言程序设计》罗云彬
  • 《Windows PE权威指南》戚利
工具:
  • PEiD:查壳工具。
  • OllyDbg:调试程序,寻找OEP。
  • LordPE:抓取内存映像【dump】。
  • ImportREConstructor:重建输入表。
下文中的演示文件来自于 ximo脱壳基础 。

一些浅薄的思考:如果PE基础不错的话,那么就会明白外壳的代码执行完之后,会跳到程序入口点,这个跳转是一个距离很远的跳转。这样的话,很显然 ximo老师说的【方法1:单步跟踪】,其实就是去找这个距离很远的跳转。如果汇编基础不错的话,那么就会明白 程序运行时,平栈很重要,也就是要保证栈平衡。这样的话,很显然 ximo老师说的【方法2:ESP定律法】,其实是栈平衡。

使用ESP定律法脱壳。具体的步骤:
  • 查壳,UPX壳,压缩壳。
  • 1_查壳.png
  • 使用OllyDbg调试,单步步过一次。在ESP上面右键- 数据窗口中跟随。
  • 2-1.png
  • 数据区-右键-断点-硬件访问-word。
  • 2-2.png
  • 运行。
  • 2-3-运行.png
  • 删除硬件断点。
  • 2-4-删除硬件断点.png
  • 单步执行一次即可看到OEP   7738C。
  • 2-5-oep.png
  • 使用LordPE来dump内存映像。
  • 右键-修正镜像大小,右键-完整转存。
  • 3-dump.png
  • 显示 程序正常初始化失败。看来是还没有重建IAT。
  • 4-1.png
  • 使用ImportREConstructor重建输入表,选进程,填写OEP-IAT自动搜索-获取导入表-修正转储 到刚才dump下来的文件。
  • 4-2-iat.png
  • 最后运行成功。
  • 5.png


学习脱壳的过程中,我感觉之前学到的 PE知识、x86汇编知识 都活过来了,太妙了。再者,居然还有 LordPE 这么方便的工具,亏我之前还费劲的写了一个颜值低、功能少的PE编辑器,白造轮子了。下次造轮子之前一定先仔细找找是不是有现成的工具,惨痛的教训呀。演示文件在附件中。


默认密码:52pojie 或者 www.52pojie.cn


rmvbfix_1.7z

541.05 KB, 下载次数: 32, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 10吾爱币 +13 热心值 +9 收起 理由
Hmily + 5 + 1 用心讨论,共获提升!
Carinx + 1 + 1 用心讨论,共获提升!
yyyao2008 + 1 + 1 用心讨论,共获提升!
J4ckacc + 1 + 1 我很赞同!
桃白白123 + 1 加油!
AG6 + 1 我很赞同!
yaoyuanyaoyuan + 1 + 1 我很赞同!
lietian0716 + 1 + 1 热心回复!
I3Ru + 1 + 1 我很赞同!
buluo533 + 1 + 1 用心讨论,共获提升!

查看全部评分

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

jackchengyu 发表于 2025-12-15 16:55
tie1zhu 发表于 2025-12-15 16:44

选进程 和  IAT自动搜索  之间要 填写OEP


535.png
我知道要填写OEP数值,但是点击获取导出表,有一个提示无效的。
 楼主| tie1zhu 发表于 2025-12-15 17:20
jackchengyu 发表于 2025-12-15 16:55
我知道要填写OEP数值,但是点击获取导出表,有一个提示无效的。

不要用win7/win8/win10/win11脱壳,换Windows XP虚拟机,原因是ASLR基地址随机化导致地址不同。
yueyechenfeng 发表于 2025-12-15 08:50
jackchengyu 发表于 2025-12-15 10:46
哪一步错了啊,ImportREConstructor重建输入表加载不出来。
截图.png
jackchengyu 发表于 2025-12-15 10:50
ImportREConstructor重建输入表,提示未解决指针问题,怎么搞
jackchengyu 发表于 2025-12-15 11:19
0007B48C函数数AA :这个无效 ,怎么搞?
555.png
labixiaoxincl 发表于 2025-12-15 12:51
跟大佬学习了
NickSONG 发表于 2025-12-15 13:03
如何脱,怎样才能脱干净
hainanyu 发表于 2025-12-15 14:48
你进了很大一步,向你学习
 楼主| tie1zhu 发表于 2025-12-15 16:44
jackchengyu 发表于 2025-12-15 10:46
哪一步错了啊,ImportREConstructor重建输入表加载不出来。

选进程 和  IAT自动搜索  之间要 填写OEP

kclerh 发表于 2025-12-15 16:50
jackchengyu 发表于 2025-12-15 10:46
哪一步错了啊,ImportREConstructor重建输入表加载不出来。

你是不是没有点击IAT自动搜索
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2026-4-20 17:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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