VBox 4.3FOR EDUCATIONAL USE ONLY!!!!!!!!! Этот документ показывает, как снять коммерческую защиту VBox 4.3 с любой программы защищенной VBox 4.3!
Необходимые инструменты: ПРИСТУПИМ:
Лирическое отступление: Теперь сам процесс снятия защиты: 1. VBox 4.3 шифрует таблицу импортов, но это можно обойти! Грузим прогу, с которой снимаем VBox в SoftIce и жмем F5. После появления NAG-Screen'а VBox'а жмем ctrl-D (входим в SoftIce) и ставим бряк на GetProcAddress (bpx GetProcAddress) после жмем F5 и в окне NAG-Screen'а жмем кнопку Try. После того как вывалимся в SIce жмем F12 и видим следующий кусок кода: 017F:0700BB36 PUSH DWORD PTR [EBP-20] 017F:0700BB39 CALL [KERNEL32!GetProcAddress] 017F:0700BB3F MOV EDI,EAX <-- вы здесь 017F:0700BB41 CMP EDI,EBX 017F:0700BB43 JZ 0700BCE6 017F:0700BB49 MOV ESI,[ESI+16] 017F:0700BB4C ADD ESI,[EBP+08] 017F:0700BB4F CMP [EBP-24],EBX <-- вызывалась ли функция закриптовки? 017F:0700BB52 JZ 0700BB89 <-- прыжок если нет 017F:0700BB54 LEA EAX,[EBP-0114] 017F:0700BB5A PUSH EAX 017F:0700BB5B PUSH DWORD PTR [EBP-20] 017F:0700BB5E PUSH EDI 017F:0700BB5F CALL 0700BF61 017F:0700BB64 ADD ESP,0C 017F:0700BB67 TEST EAX,EAX 017F:0700BB69 JZ 0700BB89 017F:0700BB6B PUSH DWORD PTR [EBP+28] 017F:0700BB6E PUSH EDI 017F:0700BB6F PUSH DWORD PTR [EBP+24] 017F:0700BB72 PUSH DWORD PTR [EBP+20] 017F:0700BB75 CALL 0700BDFE 017F:0700BB7A ADD ESP,10 017F:0700BB7D CMP EAX,EBX 017F:0700BB7F JZ 0700BDD6 017F:0700BB85 MOV [ESI],EAX <-- eax=закриптован 017F:0700BB87 JMP 0700BB8B 017F:0700BB89 MOV [ESI],EDI <-- eax=не закриптован 017F:0700BB8B INC DWORD PTR [EBP-28] 017F:0700BB8E MOV EAX,[EBP-28] 017F:0700BB91 CMP EAX,[EBP-4C] 017F:0700BB94 JL 0700B9E3Чтобы не дать VBox'у зашифровать всю таблицу имортов достаточно по адресу 0700BB52 заменить jz на jmp и все. Совет: поставте бряк на этот адрес (bpm 700BB52 x) 2. Делаем дамп. После того как вы сделали jmp по адресу 700BB52 жмите несколько раз F12 пока не выйдете из такой асм инструкции CALL EDI. Поставте изь на адрес этой инструкции (bpm <адрес> x - я не указываю адресс, т.к. они меняются каждый раз при перезапуске проги) и жмите F5. После того как вы остановитесь на этом бряке входите в него и идите до первого CALL. Входите в этот CALL через несколько строк вы увидите такую иструкцию CALL EAX, где вместо EAX передается функция GetProcAddress выполните несколько интсрукций после этого CALL до следующего и входите в него. После того как вы войдете в последний CALL через несколько строк вы увидите следующий кусок кода (здесь все адреса будут другие): 017F:011604E0 MOV EDX,[EBP-08] 017F:011604E3 MOV EAX,[EDX+14] <-- берется OEP протгиt 017F:011604E6 MOV [EBP-10],EAX 017F:011604E9 MOV EBX,[EBP-10] <-- OEP проги загоняется в EBX 017F:011604EC JMP EBX <-- Прыжок на реальную OEPСмотрим значение регистра EBX, записывем его на бумажку (только учитываем что в регистре OEP записана вместе с ImageBase, т.е OEP=EBX-ImageBase или OEP=EBX-400000) На последней иструкции выполняете A JMP EIP и жмете F5. Все можно дампить. Запускаем ProcDump (GREETZ to G-Rom) в опция ProcDump'а (кнопка Options) в поле Structure выбираем все опции, а в поле Import выбираем опцию Rebuild new import table. Жмем OK в списке процессов выбираем наш процесс делаем Dump (Full) нажав на правую кнопку мыши, сохраняем дапм на диск, например под именем dump.exe. Потом жмем в ProcDump'е кнопку PE Editor выбираем наш дамп и меняем Entry Point на ту которую мы подсмотрели в регистре EBX (уже без ImageBase) и жмем OK и все. Переименовываем наш дамп в оригинальное имя проги и получаем прогу почти в первозданном виде. Это все! Copyright 2001 Kop //KMS//ex-TDS//UOFG Greetz to KMS, UOFG and Personal to GoKs
|