Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Распаковка и восстановление от ASProtect 1.23RC1 в Screenshot Utility 1.0

Обсудить статью на форуме

Очень удобно, когда все крэкерские инструменты, книги и статьи в одном месте. Используйте сборник от EXELAB - вот тут.

Автор: FEUERRADER <feuerrader@nm.ru>


   Программа: Screenshot Utility 1.0
      Размер: 294400 байт
        Язык: Borland Delphi 5.0 [PEiD+DeDe]
      Защита: только ASProtect. Триал 30 дней.
        Цель: распаковка и взлом
 Инструменты: SoftICE+IceDUMP
              PEditor 1.7 by Y0da
              PEiD 0.8
              ImpREC 1.41+plugins
              ExeScope 6.30
 необязат.->  ASProtect 1.23 RC1, пример Trial из ASProtect 1.2
              прямые руки
 

Вступление: вот и добрались до распаковки нового Аспротекта. Сразу оговорюсь, что всё, что будет написано ниже - не относится ко всем прогам, защищенным ASProtect[New Strain]. Существует достаточно много модификаций ASProtect, которые различаются по способу криптования.

РАСПАКОВКА

Начинаем: сначала снимаем дамп. Будем пользоваться альтернативным способом распаковки (о способах читайте в другой моей статье). Соберем инфо о нашей цели: ImageBase=400000, SizeOfImage=A5000.
А теперь делаем такую вещь: смотрим на SU (Screenshot Utility) в PEiD. Выбираем в нем Menu->OEP Module. И наш ОЕР=4742C8. Поверим PEiD, что это наш ОЕР. Теперь ставим бряк :bpx GetProcAddress. Это нужно лишь чтобы прерватся в нашей проге. Также можно воспользоваться способом Break&Enter в LordPE. Пускаем прогу и прерываемся. Делаем :BC* и ставим очень классную штуку :BPR 4742C8 4742C8+1 R IF(EIP==4742C8). F5. Ждем чуть-чуть и прерываемся на нашем ОЕР! Можно теперь и снять дамп. Делаем так: /dump 400000 A5000 c:\dump.exe.

Правка дампа: открываем дамп в PEditor 1.7 by Y0da. Выбираем Sections и на секциях rsrc, .data (возможно тут лежат ресурсы) делаем Dumpfixer (правая кнопка на секции). Можно прописать ОЕР, но у нас потом его ImpREC пропишет (если в его опциях стоит такая галочка).

Восстанавливаем импорт: пускаем ImpREC и нашу закриптованную прогу. Выбираем ее из списка. Прописываем ОЕР и жмем IAT AutoSearch, ОК, потом Get Imports. Видим импорт наполовину долбленный. Жмем Auto trace. Ждем... Теперь Show Invalid и видим что несколько адресов не восстановились. Щелкаем на них правой кнопкой и выбираем плагин ASProtect 1.2x, который нужно было сделать по статье Egoist[TSRh]. У кого нет, найдите в сети. Стандартный плагин по эмуляции АСПротекта unresolved адреса НЕ ВОССТАНОВИТ, т.к. был предназначен для восстановления старых версий АСПРа.
Итак, плагин восстановил все адреса, кроме одного. Видим, что не восстановилось тут:

 1	000782C0	kernel32.dll	0260	MultiByteToWideChar
 1	000782C4	kernel32.dll	025F	MulDiv
 0	000782C8	?           	0000	011413B4         <--Вот это!!
 1	000782CC	kernel32.dll	023E	LoadResource
 1	000782D0	kernel32.dll	0239	LoadLibraryA

Если отрезать этот больной адрес и привинтить такой импорт к дампу, то прога будет ссылаться на этот адрес 11413B4 и откажется действовать. Чтобы обнаружить этот адрес, я сделал по-хитрому. В пакете с ASProtect 1.2 лежат примеры. Я скомпилировал пример Trial на Дельфи (т.к. SU сделан на Дельфи) и защитил ASProtect 1.23 RC1. Теперь по такой же схеме узнал его ОЕР и полез в Imprec. Там тоже не восстановился именно ЭТОТ адрес! Но в данном случае есть оригинальная программа! Запустим тот пример Trial, что НЕ защищен ASProtect. Восстановим у него импорт и видим в том самом месте, где у нас был unresolved:

 1	000A616C	kernel32.dll	0260	MultiByteToWideChar
 1	000A6170	kernel32.dll	025F	MulDiv
 1	000A6174	kernel32.dll	024C	LockResource      <--Это же он!!
 1	000A6178	kernel32.dll	023E	LoadResource
 1	000A617C	kernel32.dll	0239	LoadLibraryA

Это значит LockResource.
Всё ясно, в импорте нашей проги левой кнопкой щелкаем на этом адресе 11413B4. Выйдет окошко, где выберем библиотеку kernel32.dll и LockResource из списка. Теперь жмем Fix Dump с оставленной галочкой на Add New Section. Привинтили импорт. Попробуйте запустить прогу, она запускается, хотя мы еще не восстановили API ASProtect!!!

ИССЛЕДОВАНИЕ

Осмотр: видим, что вылазит наг и в меню есть пункт "Register...". Надо от всего этого избавится. Но Вы спросите: "Окна уберем, но триал то останется и потом прога откажет!". К моему удивлению триал вообще "замерз". Я покрутил время, он не меняется. Я не знаю, может он в последствии изменится, но пока вроде так.

Действия: избавимся от нага. Я трассировал по F10 код, до того момента, пока не вылезет этот наг. В отладчике я не выполнил Call, который вызывал наг и всё стало нормально. Было это тут:

 :00473FB5   mov   eax, [eax]
 :00473FB7   mov   edx, [eax]
 :00473FB9   call  dword ptr [edx+$00D8]
 :00473FBF   mov   eax, dword ptr [$47677C]
 :00473FC4   mov   eax, [eax]

Просто NOPим call по адресу 473FB9 и нага больше нет. Остался пункт popup-меню. Будем юзать EXEScope. В отличие от Ресторатора и РесХакера, он не трогает того, что не надо. Открываем RCData->TMainForm. Ищем наш пункт меню:

     object RegMe: TMenuItem
       Caption = 'Register...'
       OnClick = RegMeClick
     end

Удаляем этот текст и сохраним все изменения. Потестируйте программу. Всё, теперь она готова к нормальной эксплуатации :)

Заключение: как видите всё вышло довольно легко, но не обольщайтесь, здесь просто автор программы понадеялся на раскрученность "аппарата Солодовникова" :)



Все права защищены ©  2003 



Обсуждение статьи: Распаковка и восстановление от ASProtect 1.23RC1 в Screenshot Utility 1.0 >>>


Материалы находятся на сайте https://exelab.ru



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS