|
下载页面: sinker的朋友给他的,找sinker要 :-)
软件大小: 30 KB
发布日期: 20.10.2003
【软件简介】:PE Spin is a very simple PE protector, encryptor. Options(short): Add Debugger detection;Close program after: ... minut;API Redirection;Section names;Antidump protection;Password protection;Remove the OEP.
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【调试环境】:WinXP、OllyDbg、PEiD、LordPE、ImportREC
—————————————————————————————————
【脱壳过程】:
最近很是郁闷,碰巧看到这个东东,好像以前没见过,索性再捏个“软柿子”。
感觉PEspin的强度大体和EXE Stealth相仿,或许只能算作中等水平的保护壳吧?
—————————————————————————————————
一、避开IAT加密,得到正确的输入表
老规矩:用IsDebug 1.4插件去掉Ollydbg的调试器标志。忽略所有的异常选项。
设置Ollydbg1.09D的调试设置选项:把 事件->标记首先暂停在->“系统断点”
77F7F571 C3 retn
//进入OD后停在系统断点
复制代码
下断:BP VirtualAlloc F9运行,断下。
当然也可以不忽略某些异常,看SEH信息走,但是偶觉得用这个断点稍微快点。
确定弹出的错误警告,Shift+F9走,在77E5980A处中断第2次,偶们可以行动了。
77E5980A 55 push ebp
//中断2次,取消断点。 Ctrl+F9执行到返回
77E5980B 8BEC mov ebp,esp
77E5980D FF75 14 push dword ptr ss:[ebp+14]
77E59810 FF75 10 push dword ptr ss:[ebp+10]
77E59813 FF75 0C push dword ptr ss:[ebp+C]
77E59816 FF75 08 push dword ptr ss:[ebp+8]
77E59819 6A FF push -1
77E5981B E8 04000000 call kernel32.VirtualAllocEx
77E59820 5D pop ebp
77E59821 C2 1000 retn 10
//返回到 0040B873
复制代码
0040B86D FF95 FE284000 call dword ptr ss:[ebp+4028FE]; kernel32.VirtualAlloc
0040B873 50 push eax
0040B874 8F85 B9284000 pop dword ptr ss:[ebp+4028B9]
0040B87A 8BB5 B6224000 mov esi,dword ptr ss:[ebp+4022B6]
0040B880 03B5 B3284000 add esi,dword ptr ss:[ebp+4028B3]
0040B886 3BB5 B3284000 cmp esi,dword ptr ss:[ebp+4028B3]
0040B88C 75 09 jnz short PESpin.0040B897
0040B897 817E 10 28AE0000 cmp dword ptr ds:[esi+10],0AE28
0040B89E 0F84 42010000 je PESpin.0040B9E6
//输入表处理结束之后,将跳到这个地址◆
0040B8A4 8B5E 0C mov ebx,dword ptr ds:[esi+C]
0040B8A7 039D B3284000 add ebx,dword ptr ss:[ebp+4028B3]
0040B8AD 8BFB mov edi,ebx
0040B8AF E8 3B0C0000 call PESpin.0040C4EF
0040B8B4 E8 01000000 call PESpin.0040B8BA
//跟进
0040B8BA 58 pop eax ; PESpin.0040B8B9
0040B8BB 53 push ebx
0040B8BC 50 push eax
0040B8BD FFB5 E5284000 push dword ptr ss:[ebp+4028E5]
0040B8C3 814424 04 14000000 add dword ptr ss:[esp+4],14
0040B8CB C3 retn
//返回系统DLL,可以F7继续走到返回
复制代码
[esp+4]+14=[0012FF9C]=0040B8CD 所以直接在0040B8CD处下断,省点时间吧。
0040B8CD 85C0 test eax,eax
//此处下断,F9断在这
0040B8CF 0F84 E0050000 je PESpin.0040BEB5
0040B8D5 50 push eax
0040B8D6 E8 DDFDFFFF call PESpin.0040B6B8
0040B8DB 56 push esi
0040B8DC 53 push ebx
0040B8DD 33C9 xor ecx,ecx
0040B8DF 8A1419 mov dl,byte ptr ds:[ecx+ebx]
0040B8E2 F6C2 40 test dl,40
0040B8E5 74 04 je short PESpin.0040B8EB
0040B8E7 802419 5F and byte ptr ds:[ecx+ebx],5F
0040B8EB 41 inc ecx
0040B8EC 0AD2 or dl,dl
0040B8EE 75 EF jnz short PESpin.0040B8DF
0040B8F0 49 dec ecx
0040B8F1 C1C1 10 rol ecx,10
0040B8F4 8A2B mov ch,byte ptr ds:[ebx]
0040B8F6 B1 04 mov cl,4
0040B8F8 33D2 xor edx,edx
0040B8FA 3AAC15 03324000 cmp ch,byte ptr ss:[ebp+edx+403203]
0040B901 74 09 je short PESpin.0040B90C
0040B90C C1E9 10 shr ecx,10
0040B90F 8DBC2A 04324000 lea edi,dword ptr ds:[edx+ebp+403204]
0040B916 8B3F mov edi,dword ptr ds:[edi]
0040B918 03FD add edi,ebp
0040B91A 87F3 xchg ebx,esi
0040B91C F3:A6 repe cmps byte ptr es:[edi],byte ptr ds:[esi]
//比较是否该加密
0040B91E 75 09 jnz short PESpin.0040B929 |
|