首页
社区
课程
招聘
[旧帖] [原创]PECompact 2.5 Retail -> Jeremy Collake 疑似双层壳手动脱壳详细教程 0.00雪花
发表于: 2011-4-26 00:50 2210

[旧帖] [原创]PECompact 2.5 Retail -> Jeremy Collake 疑似双层壳手动脱壳详细教程 0.00雪花

2011-4-26 00:50
2210
声明:本人自学脱壳3天,能力有限,出错了望各位大大提出

话说这壳折腾了我好久,我是用PECompact 3.0.2.2对XP记事本加壳的,會加了疑似双层的壳,网上的文章全都是教你用单壳的方法来脱(因为他们都是拿Windows NT记事本测试的

先使用PECompact 3.0.2.2默认设定对XP记事本加壳,对Windows 2000(或更早?)的记事本也可,但只需要脱掉第一個壳,而且不用修復IAT(方便多了)。

PECompact 3.0.2.2
http://www.xdowns.com/soft/4/14/2010/Soft_62120.html

以下过程全在Windows XP下操作

peid检测结果为PECompact 2.5 Retail -> Jeremy Collake

FI检测结果为PECompact V2.X-> Bitsum Technologies

OD載入。

一开始在这:
01001000 >  B8 B05A0301     mov eax,01035AB0
01001005    50              push eax
01001006    64:FF35 0000000>push dword ptr fs:[0]   //一路F8到这

在这时查看右方寄存器面版,ESP変红了。
在左下方Command输入:hw ESP的数值来设硬件断点。
本人是:hw 0006FFC0
然后回车。
然后用鼠标点回反汇编面版。
然后按一下F9。

來到这:
01035AE3    53              push ebx
01035AE4    51              push ecx
01035AE5    57              push edi
01035AE6    56              push esi
01035AE7    52              push edx
01035AE8    8D98 57120010   lea ebx,dword ptr ds:[eax+10001257]
01035AEE    8B53 18         mov edx,dword ptr ds:[ebx+18]
01035AF1    52              push edx
01035AF2    8BE8            mov ebp,eax
01035AF4    6A 40           push 40
01035AF6    68 00100000     push 1000
01035AFB    FF73 04         push dword ptr ds:[ebx+4]
01035AFE    6A 00           push 0
01035B00    8B4B 10         mov ecx,dword ptr ds:[ebx+10]
01035B03    03CA            add ecx,edx
01035B05    8B01            mov eax,dword ptr ds:[ecx]
01035B07    FFD0            call eax
01035B09    5A              pop edx
01035B0A    8BF8            mov edi,eax
01035B0C    50              push eax
01035B0D    52              push edx
01035B0E    8B33            mov esi,dword ptr ds:[ebx]
01035B10    8B43 20         mov eax,dword ptr ds:[ebx+20]
01035B13    03C2            add eax,edx
01035B15    8B08            mov ecx,dword ptr ds:[eax]
01035B17    894B 20         mov dword ptr ds:[ebx+20],ecx
01035B1A    8B43 1C         mov eax,dword ptr ds:[ebx+1C]
01035B1D    03C2            add eax,edx
01035B1F    8B08            mov ecx,dword ptr ds:[eax]
01035B21    894B 1C         mov dword ptr ds:[ebx+1C],ecx
01035B24    03F2            add esi,edx
01035B26    8B4B 0C         mov ecx,dword ptr ds:[ebx+C]
01035B29    03CA            add ecx,edx
01035B2B    8D43 1C         lea eax,dword ptr ds:[ebx+1C]
01035B2E    50              push eax
01035B2F    57              push edi
01035B30    56              push esi
01035B31    FFD1            call ecx
01035B33    5A              pop edx
01035B34    58              pop eax
01035B35    0343 08         add eax,dword ptr ds:[ebx+8]
01035B38    8BF8            mov edi,eax
01035B3A    52              push edx
01035B3B    8BF0            mov esi,eax
01035B3D    8B46 FC         mov eax,dword ptr ds:[esi-4]
01035B40    83C0 04         add eax,4
01035B43    2BF0            sub esi,eax
01035B45    8956 08         mov dword ptr ds:[esi+8],edx
01035B48    8B4B 0C         mov ecx,dword ptr ds:[ebx+C]
01035B4B    894E 14         mov dword ptr ds:[esi+14],ecx
01035B4E    FFD7            call edi
01035B50    8985 3F130010   mov dword ptr ss:[ebp+1000133F],eax
01035B56    8BF0            mov esi,eax
01035B58    8B4B 14         mov ecx,dword ptr ds:[ebx+14]
01035B5B    5A              pop edx
01035B5C    EB 0C           jmp short 01035B6A
01035B5E    03CA            add ecx,edx
01035B60    68 00800000     push 8000
01035B65    6A 00           push 0
01035B67    57              push edi
01035B68    FF11            call dword ptr ds:[ecx]
01035B6A    8BC6            mov eax,esi
01035B6C    5A              pop edx
01035B6D    5E              pop esi
01035B6E    5F              pop edi
01035B6F    59              pop ecx
01035B70    5B              pop ebx
01035B71    5D              pop ebp
01035B72    FFE0            jmp eax   //一路F8到这,若不行,改为一路F7到这,这里貌似是oep,按一下F8进入。

若果你是对Windows XP的记事本加了壳的话会进入到这里:
01014BD3    E8 00000000     call 01014BD8  //在这里姑且dump一下。
01014BD8    60              pushad
01014BD9    E8 4F000000     call 01014C2D

若果你是对Windows 2000/NT的记事本加了壳的话会进入到这里:
0044DD74    55              push ebp  //dump在此。
0044DD75    8BEC            mov ebp,esp
0044DD77    6A FF           push -0x1

注意:对Windows 2000/NT的记事本加的壳脫到这里已经成功了,不需要继续往下操作。
用pied检测,结果为Nothing found *(无东西)
用pied深入检测,结果为Microsoft Visual C++ 6.0,貌似成功。
但成功的标准是可运行,运行试试看,结果不能运行!尝试修复IAT也不行!

用FI检测一下,结果竟然是MoleBox V2.3X -> MoleStudio.com!
現在的PECompact是用双层壳的吗?我不知道

再用OD继续。
刚才的这里:
01014BD3    E8 00000000     call 01014BD8  
01014BD8    60              pushad  //有脱壳经验的人应该很熟悉这个的。
01014BD9    E8 4F000000     call 01014C2D  //一路F8到这后按F7进入。

來到这:
01014C2D    E8 6EFBFFFF     call 010147A0  //按F7进入。
01014C32    CE              into
01014C33    0101            add dword ptr ds:[ecx],eax

來到这:
010147A0    E8 DBFBFFFF     call 01014380
010147A5    58              pop eax
010147A6    E8 55070000     call 01014F00
010147AB    58              pop eax
010147AC    894424 24       mov dword ptr ss:[esp+24],eax
010147B0    61              popad  //就快到oep的提示。
010147B1    58              pop eax
010147B2    58              pop eax
010147B3    FFD0            call eax  //一路F8到这,若不行,改为一路F7到这,这就是oep了,按F7进入吧

进入到这:
0100739D    6A 70           push 70  //dump在此。
0100739F    68 98180001     push 01001898
010073A4    E8 BF010000     call 01007568
010073A9    33DB            xor ebx,ebx

dump后用pied和FI均显示没有加壳,但仍然不能运行,这是因为还没有修复IAT,有关如何使用ImportREC修复IAT,请自行查看有关资料。
还要注意PECompact对IAT加密了,有关IAT的加密的手动查找,请自行查看http://www.pojie6.com/key/pojie/1723.html

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 2305
活跃值: (4554)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
为什么我 JMP EAX     F8后 到这里··

0044DD74    55              push ebp
0044DD75    8BEC            mov ebp,esp
0044DD77    6A FF           push -0x1
0044DD79    68 C8724700     push 测速11.004772C8
0044DD7E    68 24274500     push 测速11.00452724
0044DD83    64:A1 00000000  mov eax,dword ptr fs:[0]
0044DD89    50              push eax
0044DD8A    64:8925 0000000>mov dword ptr fs:[0],esp
0044DD91    83EC 58         sub esp,0x58
上传的附件:
2011-4-26 01:25
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
找到原因了,你这个是Windows 2000(或者更早?)的记事本,我用的是XP记事本。
Windows 2000的记事本原来脱到这里就好了!可以在0044DD74直接dump了,还不用修复IAT表。
怪不得网上教程都是脱到这里
XP就是个杯具
p.s.已修改文章。
2011-4-26 07:14
0
雪    币: 18
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
网上的文章全都是用单壳的PECompact来脱
2011-4-26 07:17
0
游客
登录 | 注册 方可回帖
返回
//