四.Dump 从上面走到这里就可以dump了 现在壳还没有把输入表填充系统函数地址,而所有数据都已还原,正是dump的最佳时机由于壳把 数据恢复到新的基址,因此LordPE需要设置一下,这样才可以完美的抓取进程 Options->Task Viewer->去掉 Full dump:Paste header from disk 选项,也就是不使用物理文件的PE头 看看保存的dump.exe,基本就是加壳前的原始文件了。到这里CI Crypt脱壳就完成了 下面在继续看看壳的流程吧
CODE
005714EF 8B9D 88FEFFFF mov ebx,dword ptr ss:[ebp-178] //[ebp-178]是输入表RVA 005714F5 85DB test ebx,ebx 005714F7 74 6C je short 00571565 005714F9 8B75 F4 mov esi,dword ptr ss:[ebp-C] 005714FC 01F3 add ebx,esi 005714FE 8B43 0C mov eax,dword ptr ds:[ebx+C] 00571501 85C0 test eax,eax 00571503 74 60 je short 00571565 00571505 8B4B 10 mov ecx,dword ptr ds:[ebx+10] 00571508 01F1 add ecx,esi 0057150A 894D C4 mov dword ptr ss:[ebp-3C],ecx 0057150D 8B0B mov ecx,dword ptr ds:[ebx] 0057150F 85C9 test ecx,ecx 00571511 75 03 jnz short 00571516 00571513 8B4B 10 mov ecx,dword ptr ds:[ebx+10] 00571516 01F1 add ecx,esi 00571518 894D C0 mov dword ptr ss:[ebp-40],ecx 0057151B 01F0 add eax,esi 0057151D 50 push eax 0057151E 8B45 10 mov eax,dword ptr ss:[ebp+10] 00571521 FF10 call near dword ptr ds:[eax]; kernel32.LoadLibraryA 00571523 85C0 test eax,eax 00571525 0F84 06010000 je 00571631 0057152B 89C7 mov edi,eax 0057152D 8B4D C0 mov ecx,dword ptr ss:[ebp-40] 00571530 8B11 mov edx,dword ptr ds:[ecx] 00571532 85D2 test edx,edx 00571534 74 2A je short 00571560 00571536 F7C2 00000080 test edx,80000000 0057153C 74 08 je short 00571546 0057153E 81E2 FFFFFF7F and edx,7FFFFFFF 00571544 EB 04 jmp short 0057154A 00571546 01F2 add edx,esi 00571548 42 inc edx 00571549 42 inc edx 0057154A 52 push edx 0057154B 57 push edi 0057154C 8B45 0C mov eax,dword ptr ss:[ebp+C] 0057154F FF10 call near dword ptr ds:[eax]; kernel32.GetProcAddress 00571551 8B4D C4 mov ecx,dword ptr ss:[ebp-3C] 00571554 8901 mov dword ptr ds:[ecx],eax //填充函数系统地址 00571556 8345 C4 04 add dword ptr ss:[ebp-3C],4 0057155A 8345 C0 04 add dword ptr ss:[ebp-40],4 0057155E EB CD jmp short 0057152D 00571560 83C3 14 add ebx,14 00571563 EB 99 jmp short 005714FE //循环处理输入表
_____________________________________________________________ 五.OEP
|