Crunch V5.0脱壳――Crunch.exe主程序
下载页面: http://www.bitarts.com/index.htm
软件大小: 5458 KB
软件语言: 英文
软件类别: 国外软件 / 共享版 / 压缩解压
应用平台: Win9x/NT/2000/XP
推荐等级: ****
软件简介: Crunch enables developers of Windows software to compress a program by up to 70% and still run without any performance difference. Crunch adds a layer of anti-debug routines into your program, preventing novice crackers from viewing or tampering with your software.
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【调试环境】:WinXP、Ollydbg、PEiD、LordPE
―――――――――――――――――――――――――――――――――
【脱壳过程】:
设置Ollydbg忽略所有异常,用IsDebug插件去掉Ollydbg的调试器标志
PEiD Sign:
[Crunch V5.0 -> Bitarts]
signature = EB 15 03 00 00 00 06
ep_only = true
――――――――――――――――――――――――
一、脱壳的最佳时机
004A5000 EB 15 jmp short Crunch.004A5017
//进入Ollydbg后暂停在这
004A5002 0300 add eax,dword ptr ds:[eax]
F9运行,弹出Licence窗口。下断:HE LoadLibraryA,然后点击Continue
中断后 去掉断点,Alt+F9返回004AB9B2处
004AB9AE FFD7 call edi
004AB9B0 FFD0 call eax ; LoadLibraryA
004AB9B2 5D pop ebp ; Crunch.0048B000
//返回这里 EBP=0048B000-基址00400000=0008B000 ★ Import Table RVA
004AB9B3 EB 08 jmp short Crunch.004AB9BD
此时代码已经解开,IAT已经还原,正是脱壳的好时机!
运行LordPE完全Dump出这个进程。
―――――――――――――――――――――――――――――――――
二、OEP
找OEP很简单,可以使用ESP定律、第2区段内存断点、异常等方法
也可以Ctrl+S在整个段块搜索命令序列:
pop dword ptr fs:[0]
add esp,4
pop ebp
popad
retn
找到在004A5BFD处,设置硬件执行断点,Shift+F9运行后中断
004A5BF5 8B6424 08 mov esp,dword ptr ss:[esp+8]
004A5BF9 8B6C24 08 mov ebp,dword ptr ss:[esp+8]
004A5BFD 64:8F05 0000000>pop dword ptr fs:[0]
//中断在这里
004A5C04 83C4 04 add esp,4
004A5C07 5D pop ebp
004A5C08 61 popad
004A5C09 C3 retn
//飞向光明之巅 ^O^
004501B8 55 push ebp
//OEP
004501B9 8BEC mov ebp,esp
004501BB 6A FF push -1
004501BD 68 28654700 push Crunch.00476528
004501C2 68 58044500 push Crunch.00450458 ; jmp to msvcrt._except_handler3
004501C7 64:A1 00000000 mov eax,dword ptr fs:[0]
004501CD 50 push eax
004501CE 64:8925 0000000>mov dword ptr fs:[0],esp
004501D5 83EC 68 sub esp,68
004501D8 53 push ebx
004501D9 56 push esi
004501DA 57 push edi
004501DB 8965 E8 mov dword ptr ss:[ebp-18],esp
004501DE 33DB xor ebx,ebx
004501E0 895D FC mov dword ptr ss:[ebp-4],ebx
004501E3 6A 02 push 2
004501E5 FF15 40C44800 call dword ptr ds:[48C440]; msvcrt.__set_app_type
―――――――――――――――――――――――――――――――――
三、PE修正
用LordPE修正dumped.exe的OEP RVA=000501B8,Import Table RVA=0008B000
可以看到Export Table原来在RVA 00082B50处,修正之
重定位表没有破坏,直接修正重定位表RVA=00099000,Size=5E24
用LordPE把IAT RVA清0,当然也可以把其数据挪移入.idata段
删除最后的.crt和.edata两个壳区段,用WinHex把其数据删掉
OK,脱壳完成啦。
BTW:主程序脱壳后的破解有意思,有兴趣的兄弟试试。
―――――――――――――――――――――――――――――――――
, _/
/| _.-~/ \_ , 青春都一晌
( /~ / \~-._ |\
`\\ _/ \ ~\ ) 忍把浮名
_-~~~-.) )__/;;,. \_ //'
/'_,\ --~ \ ~~~- ,;;\___( (.-~~~-. 换了破解轻狂
`~ _( ,_..--\ ( ,;'' / ~-- /._`\
/~~//' /' `~\ ) /--.._, )_ `~
" `~" " `" /~'`\ `\\~~\
" " "~' ""
UnPacKed By : fly
2005-04-14 18:30
[课程]Linux pwn 探索篇!