Ручная распаковка SPLayer v0.08 by Jibz Автор......: SMoKE Перевод....: NiGHTCAT \\ TEAM FIFTY THREE Цель.......: PEiD v0.93 (build 01.30.2005) (PEiD.exe) URL........: http://www.peid.tk Инструменты: OllyDbg, ImpRec, OllyDump (или другой дампер) Сегодня мы будем распаковывать пакер, который я никогда не видел. Вроде это какой-то приватный пакер. Загрузите peid.exe в Оlly... 00425FDA LEA EAX,DWORD PTR DS:[EAX] 00425FDD MOV ECX,PEID.00425FCC 00425FE2 PUSH 0E 00425FE4 POP EAX 00425FE5 ROR BYTE PTR DS:[ECX+EAX],4 00425FE9 DEC EAX 00425FEA JNZ SHORT PEID.00425FE5 00425FEC ADC SI,AX 00425FEF XCHG EAX,ECX 00425FF0 CMP EBX,ECX 00425FF2 CMP EDX,6CFBD0B0 00425FF8 JMP SHORT PEID.00425FCC Трейсимся до jump'a, если у вас что-то подобое: 00425FCC MOV ECX,24FCC 00425FD1 SUB EAX,ECX 00425FD3 XOR BYTE PTR DS:[EAX+ECX],CL 00425FD6 DB E2 00425FD7 DB FB 00425FD8 DB 50 ; CHAR 'P' 00425FD9 DD PEID.0040D8C3 00425FDD MOV ECX,PEID.00425FCC Затем делаем так: правый клик --> Analysis --> Remove analysis from module теперь вы должны видеть что-то такое: 00425FCC MOV ECX,24FCC 00425FD1 SUB EAX,ECX 00425FD3 XOR BYTE PTR DS:[EAX+ECX],CL 00425FD6 LOOPD SHORT PEID.00425FD3 00425FD8 PUSH EAX 00425FD9 RETN продолжаем трейсится... вы можете обойти инструкцию loopd, написав в коммандной строке G EIP+2, когда вы находитесь как раз на "loopd"... после "ret" вы увидите... 00401000 MOV EAX,PEID.004797E8 00401005 PUSH EAX 00401006 PUSH DWORD PTR FS:[0] 0040100D MOV DWORD PTR FS:[0],ESP 00401014 XOR EAX,EAX 00401016 MOV DWORD PTR DS:[EAX],ECX так что загрузчик ставит новый exception handler на адрес 4797E8, а уже потом пытается записать по адресу 00000000, так что вы получите "access violation" и работа продолжится с 4797E8, как же это отловить? Вы можете просто поставить брейкпоинт на 4797E8 и когда вы получите исключение, нажмите SHIFT+F9 и попадёте на адрес 4797E8, потом трейсясь (и колбасясь - NCat :) и пропуская "loopd инструкции" с помошью G EIP+2 вы пройдёте через всююююю процедуру декриптовки, в конце окажетесь тут: 00479584 MOV EAX,FFBA8468 00479589 LEA ECX,DWORD PTR DS:[EAX+8D113F] 0047958F MOV DWORD PTR DS:[ECX+1],EAX 00479592 MOV EDX,DWORD PTR SS:[ESP+4] Однако если вы не изъявляете особо острого желания так долго идти через "всююююю процедуру декриптовки" (NCat - ;)) - просто нажмите SHIFT+F8, когда у вас появилось исключение и вы на паузе. Вы ТУТ: -> 004795A7 MOV EAX,FFBA8468 004795AC POP DWORD PTR FS:[0] 004795B3 ADD ESP,4 004795B6 PUSH EBP 004795B7 PUSH EBX Скроллим вниз (все call'ы это процедуры распаковки и пропатчивания import table) и наконец влетаем сюда: 00479647 MOV EAX,ESI 00479649 POP EDX 0047964A POP ESI 0047964B POP EDI 0047964C POP ECX 0047964D POP EBX 0047964E POP EBP 0047964F JMP EAX последний jmp - это прыжо на вашу OEP, так что тепеь вы на ней ;) 00455F1E PUSH 60 00455F20 PUSH PEID.0042F508 00455F25 CALL PEID.004577DC 00455F2A MOV EDI,94 00455F2F MOV EAX,EDI Сдампьте процесс БЕЗ перестройки импорта, закройте Оlly. Запустите peid.exe и ImpRec, выберите этот процесс из списка, в строке OEP напишите значение OEP RVA, которое вы только что получили - 55F1E. Нажмите IAT AutoSearch -> Get Imports, как видим все строки нормальные, так что нажимайте "fix dump" и выберите вас сдампленный екзешник. Скрестите пальцы и запускайте дамп... РАБОТАЕТ! Проверим с помощью PEiD... Microsoft Visual C++ 7.0 :))) 23:02 14.04.05 freenet.am/~softland smoke@freenet.am t53cd@gmail.com ======================================================================= TEAM-53 TUTORiALs \ \ www.BSUiR.com \ \ #team-53 , IRC.BYNETS.ORG =======================================================================