• 微软原版系统

  • 一键重装系统

  • 纯净系统

  • 在线技术客服

魔法猪系统重装大师 一键在线制作启动 U 盘 PE 系统 用一键重装的魔法拯救失去灵魂的系统
当前位置:首页 > 教程 > 电脑教程

利用ESP定手动律脱UPX0.89.6-1.02/1.05-1.24壳实例

时间:2015年04月02日 15:14:50    来源:魔法猪系统重装大师官网    人气:19270

利用ESP定律不仅使得脱压缩壳变得非常简单,而且可以应付不少加密壳。
简单地说,ESP定律就是利用了堆栈平衡的原理。
可以把壳假设为一个子程序,当壳把代码解压前和解压后,必须要做的是遵循堆栈平衡的原理。
让ESP执行到OEP时,使ESP和壳初始入栈时的ESP相一致。
ESP定律的使用方法:载入加壳程序,当ESP中的值第一次改变时记下这个值。
对这个值下的硬件访问断点,运行程序后,一般的压缩壳都会停在待转向OEP的那条语句上。
利用ESP定律脱 UPX 0.89.6 - 1.02 / 1.05 - 1.24 壳实例
1.OllyDbg打开加了UPX壳的Crackme.exe
地址          HEX数据          反汇编          注释
00457B40          60          PUSHAD          程序的入口点
寄存器 ( FFU )
EAX 00000000
ECX 0012FFB0
EDX 7C92EB94 ntdll.KiFastSystemCallRet
EBX 7FFDD000
ESP 0012FFC4
EBP 0012FFF0
ESI FFFFFFFF
EDI 7C930738 ntdll.7C930738
EIP 00457B40 Crackme.<模块入口点>
C 0 ES 0023 32位 0(FFFFFFFF)
P 1 CS 001B 32位 0(FFFFFFFF)
A 0 SS 0023 32位 0(FFFFFFFF)
Z 1 DS 0023 32位 0(FFFFFFFF)
S 0 FS 003B 32位 7FFDF000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00000246 (NO,NB,E,BE,NS,PE,GE,LE)
ST0 empty -UNORM BCE0 01050104 00000000
ST1 empty 0.0
ST2 empty 0.0
ST3 empty 0.0
ST4 empty 0.0
ST5 empty 0.0
ST6 empty 0.0
ST7 empty 0.0
               3 2 1 0      E S P U O Z D I
FST 0000 Cond 0 0 0 0 Err 0 0 0 0 0 0 0 0 (GT)
FCW 027F Prec NEAR,53 掩码    1 1 1 1 1 1
2.按F8键单步运行到第二句
地址          HEX数据          反汇编
00457B41          BE 00B04300          MOV ESI,Crackme.0043B000
发现ESP寄存器中的值发生变化 -- 变为0012FFA4 ( 硬件不同 - 此值可能不相同 )
EAX 00000000
ECX 0012FFB0
EDX 7C92EB94 ntdll.KiFastSystemCallRet
EBX 7FFDD000
ESP 0012FFA4
EBP 0012FFF0
ESI FFFFFFFF
EDI 7C930738 ntdll.7C930738
EIP 00457B41 Crackme.00457B41
C 0 ES 0023 32位 0(FFFFFFFF)
P 1 CS 001B 32位 0(FFFFFFFF)
A 0 SS 0023 32位 0(FFFFFFFF)
Z 1 DS 0023 32位 0(FFFFFFFF)
S 0 FS 003B 32位 7FFDF000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00000246 (NO,NB,E,BE,NS,PE,GE,LE)
ST0 empty -UNORM BCE0 01050104 00000000
ST1 empty 0.0
ST2 empty 0.0
ST3 empty 0.0
ST4 empty 0.0
ST5 empty 0.0
ST6 empty 0.0
ST7 empty 0.0
3 2 1 0      E S P U O Z D I
FST 0000 Cond 0 0 0 0 Err 0 0 0 0 0 0 0 0 (GT)
FCW 027F Prec NEAR,53 掩码    1 1 1 1 1 1
3.HR 地址 -- 设置硬件访问断点
在命令行输入 hr 0012FFA4
[ Enter... ]
然后按F9键调用程序运行,
可以发现已经来到了 00457C65 - E9 D295FAFF     JMP Crackme.0040123C 地址处,
这正好是跳向OEP的那条指令Jmp语句,
再按F8键跳向0040123C地址处。
4:对其右键,选择“用OllyDump脱壳调试进程”,
起始地址一般都是400000,文件大小自动识别即可。
入口点地址也自动定位到了程序OEP的偏移地址123C处,
代码起始RVA和数据起始也按默认识别的就可以。
5:勾选下面的重建输入表,OllyDump会自动修复引入表。
一般选择方式1,如果方式1脱壳后修复的效果不理想,可以尝试方式2,
不过最好还是用专业的 Import REConstructor 修复最好。
6:单击“脱壳”按钮
用PEiD扫描一下,检测到程序是用 Microsoft Visual Basic 5.0 / 6.0 编写的。
[ Finish... ]
可以看出,ESP定律的效果是非常明显的,
熟练掌握ESP定律对于手动脱壳是非常有用的。

利用,ESP,定,手动,律脱,UPX0.89.6-1.02,
栏目:电脑教程 阅读:1000 2023/12/27
Win7教程 更多>>
U盘教程 更多>>
Win10教程 更多>>
魔法猪学院 更多>>

Copyright © 2015-2023 魔法猪 魔法猪系统重装大师

本站发布的系统仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件。

在线客服 查看微信 返回顶部