〖打印本页〗〖打印选项〗 |
PECompact 2.x 完美脱壳法 |
【加壳方式】PECompact 2.x -> Jeremy Collake OllyDbg忽略内存访问异常,载入主程序: 00401000 > B8 1CBA5000 MOV EAX, 0050BA1C 00401005 50 PUSH EAX 00401006 64:FF35 0000000>PUSH DWORD PTR FS:[0] 0040100D 64:8925 0000000>MOV DWORD PTR FS:[0],ESP 00401014 33C0 XOR EAX,EAX 00401016 8908 MOV DWORD PTR DS:[EAX],ECX 00401018 50 PUSH EAX 00401019 45 INC EBP 0040101A 43 INC EBX 0040101B 6F OUTS DX,DWORD PTR ES:[EDI] ; I/O command 0040101C 6D INS DWORD PTR ES:[EDI],DX ; I/O command bp VirtualAlloc 运行 返回到用户代码: Ctrl+F搜索命令:call edi 0050BAC1 8B4B 0C MOV ECX,DWORD PTR DS:[EBX+C] 0050BAC4 894E 14 MOV DWORD PTR DS:[ESI+14],ECX 0050BAC7 FFD7 CALL EDI ;跟进去 0050BAC9 8985 23120010 MOV DWORD PTR SS:[EBP+10001223],EAX 0050BACF 8BF0 MOV ESI,EAX 0050BAD1 59 POP ECX 0050BAD2 5A POP EDX 进入call edi,来到: 01240258 53 PUSH EBX ; GameThru.0050B9F8 01240259 57 PUSH EDI 0124025A 56 PUSH ESI 0124025B 55 PUSH EBP 0124025C E8 00000000 CALL 01240261 01240261 5D POP EBP 01240262 81ED 30120010 SUB EBP,10001230 01240268 8DB5 27120010 LEA ESI,DWORD PTR SS:[EBP+10001227] 0124026E 8B46 FC MOV EAX,DWORD PTR DS:[ESI-4] Ctrl+F搜索命令:mov ecx,[esi+34] 01240333 90 NOP 01240334 90 NOP 01240335 8B4E 34 MOV ECX,DWORD PTR DS:[ESI+34] 01240338 85C9 TEST ECX,ECX ; ecx=8D000保存原始Import,把它改成零 0124033A 0F84 89000000 JE 012403C9 ; 这里强制跳过去,跟tE一样 01240340 034E 08 ADD ECX,DWORD PTR DS:[ESI+8] 01240343 51 PUSH ECX 01240344 56 PUSH ESI bp VirtualFree,中断两次以后返回(thx2fly): 0050BADC 57 PUSH EDI 0050BADD FF11 CALL DWORD PTR DS:[ECX] 0050BADF 8BC6 MOV EAX,ESI ; GameThru.00487228 0050BAE1 5A POP EDX 0050BAE2 5E POP ESI 0050BAE3 5F POP EDI 0050BAE4 59 POP ECX 0050BAE5 5B POP EBX 0050BAE6 5D POP EBP 0050BAE7 FFE0 JMP EAX ; 飞向光明之颠^o^ 完全dump下来,修正输入表为8D000,收工。 【OS自动脚本】 //////////////////////////////////////////// //// PECompact V2.X 完美脱壳脚本 //// cyclotron [BCG][DFCG][FCG][OCN] //////////////////////////////////////////// msg "请忽略内存访问异常!" var dwImport gpa "VirtualAlloc","kernel32.dll" bp $RESULT run bc $RESULT rtu findop eip,#FFD7# //call edi bp $RESULT run bc $RESULT sti findop eip,#8B4E34# //mov ecx,[esi+34h] bp $RESULT run bc $RESULT sti mov dwImport,ecx mov ecx,0 gpa "VirtualFree","kernel32.dll" bp $RESULT run run bc $RESULT rtu findop eip,#FFE0# //jmp eax bp $RESULT run bc $RESULT msg dwImport msg "请转储文件!" Regards, cyclotron 05.2.6 文章作者:未知 |