首页
社区
课程
招聘
发一篇脱壳的文章,顺便问一下有人知道这是什么壳吗?
发表于: 2005-5-2 03:24 4092

发一篇脱壳的文章,顺便问一下有人知道这是什么壳吗?

2005-5-2 03:24
4092
Unpack CopyPod V6.00

下载地址:  URL http://www.copypod.net/bin/CopyPod_v6.00.exe
软件大小:  877 KB
软件语言:  英文
软件类别:  国外软件 / 共享版 / 文件备份
应用平台:  Win9x/NT/2000/XP
加入时间:  2005-03-23
软件简介:  用于备份你的iPod中的数据

调试环境:WinXPSP1, FlyODBG(2005-03-28), LordPE, ImportREC

前两天郁闷为什么我汉化的CopyPod v5上传到汉化新世纪上没有人理我,今天才发现原来他出新版了。
用PEiD侦测一下,显示是 Nothing Found*,通用脱壳机也不行,算了还是手脱吧,不过中途居然很幸运的发现了被它清空的区段名。

00634288 >  E8 03000000     call    复件_Cop.00634290 //进入OD停在了这里
0063428D    EB 01           jmp     short 复件_Cop.00634290
0063428F    E8 BB550000     call    复件_Cop.0063984F
00634294    00E8            add     al, ch
00634296    0300            add     eax, dword ptr ds:[eax]
00634298    0000            add     byte ptr ds:[eax], al
0063429A    EB 01           jmp     short 复件_Cop.0063429D
0063429C    C2 E88F         retn    8FE8

先找OEP吧。下断点 bp CreateFileA,中断4次后打开内存映像的窗口,在00401000段上下个内存访问中断。
直达OEP:00401914。Borland C++程序,入口很完整。输入表:001FD120,大小:F9C,DisASM,cut掉扫描不出来的指针。就全了。
在这里如果你有什么还方法能让00140000段加入脱壳后的文件还能运行的话,就可以用你喜欢的东西dump了,记得要dump段00140000。还有记得也告诉我一下。。。。^_^

不过,现实情况是我不会。。。所以我要重来,防止它加密IAT,并把IAT改成直接跳转的形式塞到00140000中去。
记下第一个IAT的地址是005FD120,带回要用它来找加密的地方。重来。

在005FD120上下内存写入断点。F9

第1~4次:00635807    AA               stos    byte ptr es:[edi]

第5~11次:00635B22    F3:A4            rep     movs byte ptr es:[edi], byte ptr ds:[esi]

第12次:
00636007    61               popad
00636008    5A               pop     edx
00636009    8902             mov     dword ptr ds:[edx], eax                     ; WININET.InternetGetConnectedState
//断在了这里。大大的函数地址就在右边。
0063600B    EB 1D            jmp     short 复件_Cop.0063602A

清除内存断点。F8单步走吧,后面有加密:
00636070    8D39             lea     edi, dword ptr ds:[ecx]
00636072    3E:8B77 04       mov     esi, dword ptr ds:[edi+4]
00636076    8932             mov     dword ptr ds:[edx], esi //就是这里。nop它
00636078    2BC6             sub     eax, esi
0063607A    83E8 05          sub     eax, 5
0063607D    C606 E9          mov     byte ptr ds:[esi], 0E9
00636080    8946 01          mov     dword ptr ds:[esi+1], eax
00636083    3E:8347 04 05    add     dword ptr ds:[edi+4], 5
00636088    5E               pop     esi
00636089    5F               pop     edi
0063608A    59               pop     ecx
0063608B    83C1 04          add     ecx, 4
0063608E    83C2 04          add     edx, 4
00636091  ^ E9 09FFFFFF      jmp     复件_Cop.00635F9F
00636096    83C6 0C          add     esi, 0C
00636099  ^ E9 6BFEFFFF      jmp     复件_Cop.00635F09
0063609E    33C0             xor     eax, eax

信息窗口:
esi=001435A0
ds:[005FD120]=76175239 (WININET.InternetGetConnectedState)

然后去IAT的末尾005FE140下个内存写入断点。F9暂停后清除断点,再F4到0063609E。
。这时候,请在开启一个OD的窗口。不要nop那条加密指令,到达这里。
然后两个OD对照着运行,因为刚刚我们修改后会出现一些问题。

006360FF    33C3             xor     eax, ebx
00636101    74 08            je      short 复件_Cop.0063610B //这里
00636103    EB 01            jmp     short 复件_Cop.00636106

两个OD给出了不同的条件,请按照第二个OD的EFL值修改第一个OD的EFL值。
改完后就可以关掉第二个OD了。在00401000段上下内存访问断点。直达OEP。
输入表的RVA和大小不变。获取后直接cut掉不用的指针就行了。
用LordPE纠正一下ImageSize就可以Dump了,再用ImportREC修复一下就可以运行了。

现在再来看看是在哪看见那些区段名的:
在005FD120上下内存写入断点。F9中断后取消断点,F4到下面的Retn,在返回几次后就可以看到:

00635337    42               inc     edx
00635338    66:3E:3B57 06    cmp     dx, word ptr ds:[edi+6] //这里
0063533D  ^ 0F85 D4FDFFFF    jnz     复件_Cop.00635117

看一下寄存器:ESI 004003C0 ASCII ".edata"
004002F0   00 00 00 00 00 00 00 00 2E 74 65 78 74 00 00 00  .........text...
00400300   00 30 17 00 00 10 00 00 00 80 0A 00 00 06 00 00  .0.....?....
00400310   00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 C0  ............@..?

00400320   2E 64 61 74 61 00 00 00 00 70 08 00 00 40 17 00  .data....p..@.
00400330   00 A2 00 00 00 86 0A 00 00 00 00 00 00 00 00 00  .?..?.........
00400340   00 00 00 00 40 00 00 C0 2E 74 6C 73 00 00 00 00  ....@..?tls....
00400350   00 10 00 00 00 B0 1F 00 00 02 00 00 00 28 0B 00  ....?.....( .
00400360   00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 C0  ............@..?

00400370   2E 72 64 61 74 61 00 00 00 10 00 00 00 C0 1F 00  .rdata......?.
00400380   00 02 00 00 00 2A 0B 00 00 00 00 00 00 00 00 00  ....* .........
00400390   00 00 00 00 40 00 00 C0 2E 69 64 61 74 61 00 00  ....@..?idata..
004003A0   00 40 00 00 00 D0 1F 00 00 12 00 00 00 2C 0B 00  .@...?....., .
004003B0   00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 C0  ............@..?

004003C0   2E 65 64 61 74 61 00 00 00 20 01 00 00 10 20 00  .edata... .. .
004003D0   00 44 00 00 00 3E 0B 00 00 00 00 00 00 00 00 00  .D...> .........
004003E0   00 00 00 00 40 00 00 C0 2E 72 73 72 63 00 00 00  ....@..?rsrc...
004003F0   00 10 02 00 00 30 21 00 00 08 02 00 00 82 0B 00  ...0!....?.
00400400   00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 C0  ............@..?

00400410   2E 57 69 6E 64 53 6F 6C 00 F0 0A 00 00 40 23 00  .WindSol.?..@#.
00400420   34 2A 00 00 00 8A 0D 00 00 00 00 00 00 00 00 00  4*...?.........

8个段名一个不少。

第一次写脱壳文章,居然调了一个不认识的壳。应该是很弱的那种壳吧。
如果大家有什么更好的方法请告诉我。虚心学习中。。。。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
可能是 yoda's Protector
2005-5-2 09:11
0
游客
登录 | 注册 方可回帖
返回
//