首页
社区
课程
招聘
[原创]PECompact 2.x -> Jeremy Collake [Overlay]手动脱壳
发表于: 2005-10-27 12:16 12834

[原创]PECompact 2.x -> Jeremy Collake [Overlay]手动脱壳

2005-10-27 12:16
12834
这是一个小软件

我们用PEID查壳
得知是
PECompact 2.x -> Jeremy Collake [Overlay]
加的

我们用OD载入
00403BFE >  B8 44E14000     mov eax,Server.0040E144    //载入后 停在这里
00403C03    50              push eax
00403C04    64:FF35 0000000>push dword ptr fs:[0]
00403C0B    64:8925 0000000>mov dword ptr fs:[0],esp   //F8走到这里,看寄存器信息
EAX 0040E144 Server.0040E144
ECX 0012FFB0
EDX 7FFE0304
EBX 7FFDF000
ESP 0012FFBC
EBP 0012FFF0
~~~~~~~~~~~~~~~~~~~~~~~~~~
00403C12    33C0            xor eax,eax
00403C14    8908            mov dword ptr ds:[eax],ecx
00403C16    50              push eax
00403C17    45              inc ebp
00403C18    43              inc ebx
00403C19    6F              outs dx,dword ptr es:[edi]
00403C1A    6D              ins dword ptr es:[edi],dx
00403C1B    70 61           jo short Server.00403C7E
00403C1D    637432 00       arpl word ptr ds:[edx+esi],si
00403C21    190A            sbb dword ptr ds:[edx],ecx

//  HR12FFBC下硬件断点  回车后 F9运行

0040E173    83C4 04         add esp,4    //断在这里
0040E176    55              push ebp
0040E177    53              push ebx
0040E178    51              push ecx
0040E179    57              push edi
0040E17A    56              push esi
0040E17B    52              push edx
0040E17C    8D98 68110010   lea ebx,dword ptr ds:[eax+10001168]
0040E182    8B53 18         mov edx,dword ptr ds:[ebx+18]
0040E185    52              push edx
0040E186    8BE8            mov ebp,eax
0040E188    6A 40           push 40
0040E18A    68 00100000     push 1000
0040E18F    FF73 04         push dword ptr ds:[ebx+4]
0040E192    6A 00           push 0
0040E194    8B4B 10         mov ecx,dword ptr ds:[ebx+10]
0040E197    03CA            add ecx,edx
0040E199    8B01            mov eax,dword ptr ds:[ecx]
0040E19B    FFD0            call eax            //F8运行到这里后 回车
0040E19D    5A              pop edx
0040E19E    8BF8            mov edi,eax
0040E1A0    50              push eax
0040E1A1    52              push edx
0040E1A2    8B33            mov esi,dword ptr ds:[ebx]
0040E1A4    8B43 20         mov eax,dword ptr ds:[ebx+20]
0040E1A7    03C2            add eax,edx
0040E1A9    8B08            mov ecx,dword ptr ds:[eax]
0040E1AB    894B 20         mov dword ptr ds:[ebx+20],ecx

77E5AC72 >  55              push ebp   //回车后到达这里   F9运行下
77E5AC73    8BEC            mov ebp,esp
77E5AC75    FF75 14         push dword ptr ss:[ebp+14]
77E5AC78    FF75 10         push dword ptr ss:[ebp+10]
77E5AC7B    FF75 0C         push dword ptr ss:[ebp+C]
77E5AC7E    FF75 08         push dword ptr ss:[ebp+8]
77E5AC81    6A FF           push -1
77E5AC83    E8 9CFFFFFF     call kernel32.VirtualAllocEx
77E5AC88    5D              pop ebp
77E5AC89    C2 1000         retn 10
77E5AC8C    8B4424 04       mov eax,dword ptr ss:[esp+4]
77E5AC90    85C0            test eax,eax
77E5AC92    0F84 B7010000   je kernel32.77E5AE4F
77E5AC98    A8 01           test al,1
77E5AC9A  ^ 0F85 CAF7FEFF   jnz kernel32.77E4A46A
77E5ACA0    C2 0800         retn 8
77E5ACA3  - FF25 6413E477   jmp dword ptr ds:[<&ntdll.LdrLockLoaderLock>; ntdll.LdrLockLoaderLock
77E5ACA9 >  6A 28           push 28
77E5ACAB    68 283BE677     push kernel32.77E63B28
77E5ACB0    E8 23F6FFFF     call kernel32.77E5A2D8

0040E210    5D              pop ebp                      //F9运行后 到达这里 我们再次F9
0040E211    FFE0            jmp eax
0040E213    FE              ???                                         ; 未知命令
0040E214    3B40 00         cmp eax,dword ptr ds:[eax]
0040E217    0000            add byte ptr ds:[eax],al
0040E219    0000            add byte ptr ds:[eax],al
0040E21B    0000            add byte ptr ds:[eax],al
0040E21D    0000            add byte ptr ds:[eax],al
0040E21F    0000            add byte ptr ds:[eax],al
0040E221    0000            add byte ptr ds:[eax],al
0040E223    0000            add byte ptr ds:[eax],al
0040E225    0000            add byte ptr ds:[eax],al
0040E227    0000            add byte ptr ds:[eax],al
0040E229    0000            add byte ptr ds:[eax],al
0040E22B    0000            add byte ptr ds:[eax],al

00403C03    68 30564000     push Server.00405630              //OK  一片红字, DUMP 吧
00403C08    68 5C3D4000     push Server.00403D5C                        ; jmp to msvcrt._except_handler3
00403C0D    64:A1 00000000  mov eax,dword ptr fs:[0]
00403C13    50              push eax
00403C14    64:8925 0000000>mov dword ptr fs:[0],esp
00403C1B    83EC 68         sub esp,68
00403C1E    53              push ebx
00403C1F    56              push esi
00403C20    57              push edi
00403C21    8965 E8         mov dword ptr ss:[ebp-18],esp
00403C24    33DB            xor ebx,ebx
00403C26    895D FC         mov dword ptr ss:[ebp-4],ebx
00403C29    6A 02           push 2
00403C2B    FF15 C4524000   call dword ptr ds:[4052C4]                  ; msvcrt.__set_app_type
00403C31    59              pop ecx
00403C32    830D B0744000 F>or dword ptr ds:[4074B0],FFFFFFFF
00403C39    830D B4744000 F>or dword ptr ds:[4074B4],FFFFFFFF
00403C40    FF15 C8524000   call dword ptr ds:[4052C8]                  ; msvcrt.__p__fmode
00403C46    8B0D A4744000   mov ecx,dword ptr ds:[4074A4]
00403C4C    8908            mov dword ptr ds:[eax],ecx
00403C4E    FF15 CC524000   call dword ptr ds:[4052CC]                  ; msvcrt.__p__commode
00403C54    8B0D A0744000   mov ecx,dword ptr ds:[4074A0]
00403C5A    8908            mov dword ptr ds:[eax],ecx

我们DUMP后,拿出修复工具,添入OEP:3C03    有两个无效的指针
我们用第一个搜索修复 嘿嘿 修复好一个 还有一个我们CUT掉吧

OK  我们再用 PEID 查下 Microsoft Visual C++ 6.0  

第一次发 呵呵  不足的地方 高手请指教啊

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 229
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
支持一下!
2005-10-27 18:25
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
3
我怎么觉得少了
push ebp
mov ebp, esp
push -1
2005-10-27 19:51
0
雪    币: 288
活跃值: (415)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
4
overlay是些什么东西呢
应该还有补上去吧
2005-10-27 20:10
0
雪    币: 288
活跃值: (415)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
5
最初由 Pr0Zel 发布
overlay是些什么东西呢
应该还要补上去吧
2005-10-27 20:10
0
雪    币: 236
活跃值: (100)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
6
我们用OD载入
00403BFE >  B8 44E14000     mov eax,Server.0040E144    //载入后 停在这里
00403C03    50              push eax
00403C04    64:FF35 0000000>push dword ptr fs:[0]
00403C0B    64:8925 0000000>mov dword ptr fs:[0],esp   //F8走到这里,看寄存器信息
EAX 0040E144 Server.0040E144
ECX 0012FFB0
EDX 7FFE0304
EBX 7FFDF000
ESP 0012FFBC
EBP 0012FFF0
~~~~~~~~~~~~~~~~~~~~~~~~~~
00403C12    33C0            xor eax,eax
00403C14    8908            mov dword ptr ds:[eax],ecx
00403C16    50              push eax
00403C17    45              inc ebp
00403C18    43              inc ebx
00403C19    6F              outs dx,dword ptr es:[edi]
00403C1A    6D              ins dword ptr es:[edi],dx
00403C1B    70 61           jo short Server.00403C7E
00403C1D    637432 00       arpl word ptr ds:[edx+esi],si
00403C21    190A            sbb dword ptr ds:[edx],ecx

//  HR12FFBC下硬件断点  回车后 F9运行
我发现在这里F9几下后,就直接到达这里了

0040E210    5D              pop ebp                  
0040E211    FFE0            jmp eax
这样到达OEP更快
2005-10-28 10:31
0
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
7
有没有这个壳的外壳分析啊
2005-10-28 15:35
0
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
8
有没有这个壳的外壳分析啊
2005-10-28 15:42
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
支持以下!
2005-10-30 12:52
0
雪    币: 175
活跃值: (2506)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
数据不附加上可以吗?
2005-10-30 20:49
0
游客
登录 | 注册 方可回帖
返回
//