声明:本人自学脱壳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解题方法汇总!