【文章标题】: UrlPaster 脱壳
【文章作者】: crker
【作者邮箱】: crker@qq.com
【作者主页】: http://627697523.qzone.qq.com/
【作者QQ号】: 627697523
【软件名称】: Url_a_t_r v2.1
【软件大小】: 780KB
【下载地址】: 自己搜索下载
【加壳方式】: UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo [Overlay]
【保护方式】: 重启注册验证
【编写语言】: Microsoft Visual C++ 6.0
【使用工具】: OllyICE
【操作平台】: WinXP
【软件介绍】: UrlPaster是专为保存网址(收藏网址)设计的书签工具.
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
首先对Overlay解析一下,Overlay是附加数据的意识。
看雪大哥指导的stasi转载的文章《浅谈脱壳中的附加数据问题(overlay)》
http://www.pediy.com/bbshtml/BBS6/pediy6923.htm
下面是脱壳过程,首先是经典的ESP定律来脱UPX壳,
用OD载入:
00580CC0 > 60 pushad ; 点F8一次
00580CC1 BE 00104F00 mov esi, 004F1000 ; 这里下HR ESP( hr 0012FFA4),然后F9
00580CC6 8DBE 0000F1FF lea edi, dword ptr [esi+FFF10000]
00580CCC 57 push edi
00580CCD 83CD FF or ebp, FFFFFFFF
00580CD0 EB 10 jmp short 00580CE2
00580CD2 90 nop
00580CD3 90 nop
00580CD4 90 nop
00580CD5 90 nop
00580CD6 90 nop
00580CD7 90 nop
00580CD8 8A06 mov al, byte ptr [esi]
.....................................................................
00580E65 58 pop eax
00580E66 61 popad
00580E67 8D4424 80 lea eax, dword ptr [esp-80] ; 停在这里
00580E6B 6A 00 push 0 ; //这是个循环
00580E6D 39C4 cmp esp, eax ; //
00580E6F ^ 75 FA jnz short 00580E6B ; //
00580E71 83EC 80 sub esp, -80 ; 用鼠标点下这里,按F4,程序会运行到这里
00580E74 - E9 6993F0FF jmp 0048A1E2 ; F8一下,到达OEP
......................................................................
0048A1E2 55 push ebp ; OEP,可以直接dump下来,查壳可以看出是vc6写的
0048A1E3 8BEC mov ebp, esp ; 一看就知道是vc的程序头
0048A1E5 6A FF push -1
0048A1E7 68 50AE4E00 push 004EAE50
0048A1EC 68 F0EE4800 push 0048EEF0
0048A1F1 64:A1 00000000 mov eax, dword ptr fs:[0]
0048A1F7 50 push eax
0048A1F8 64:8925 0000000>mov dword ptr fs:[0], esp
0048A1FF 83EC 58 sub esp, 58
0048A202 53 push ebx
0048A203 56 push esi
0048A204 57 push edi
0048A205 8965 E8 mov dword ptr [ebp-18], esp
0048A208 FF15 24A44D00 call dword ptr [4DA424] ; kernel32.GetVersion
0048A20E 33D2 xor edx, edx
0048A210 8AD4 mov dl, ah
0048A212 8915 74245100 mov dword ptr [512474], edx
=====================================================================
这个程序是UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo [Overlay],有附加数据,
在OEP位置dump下来,程序不能运行。现在开始修复附加数据。
用PEID查看区段只有UPX0、UPX1、.rsrc三个段,我们使用Stud_PE,因为它会把附加数据单独列出来,避免新手去计算。
用Stud_PE打开加壳程序,可以看到UPX0、UPX1、.rsrc、ExtraDat四个段,其中ExtraDat,RS=100,RA=C3200
查看附加数据段ExtraDat,可以看到有0x100的附加数据,复制附加数据。
现在用Stud_PE打开dump下来的程序,可以看到UPX0、UPX1、.rsrc、.tdata2四个段,修改.idata2段的RS=2C00为2B00,
现在可以看到UPX0、UPX1、.rsrc、.tdata2、ExtraDat五个段,查看附加数据段ExtraDat,把刚才复制的数据,粘贴到
改数据段,保存文件。
现在可以运行该程序,一切正常。OK!脱壳完毕。
--------------------------------------------------------------------------------
【经验总结】
多学习前辈的经验,例如《浅谈脱壳中的附加数据问题(overlay)》就是很好的总结性知识。多多动手,动手过程中,你
可以学到很多你看文章无法体会到的经验。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2010年06月24日 9:28:33
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课