RCE.SU - реверсинг, кодинг, выделенные сервера, ICQ, proxy

Исследование Crystal Button (ASProtect)

Как обычно... упакована аспротектом :) Ща наверно мода пошла на аспротект, не пойму только почему... Ломают его также часто как и другие протекторы, но факт есть фактом: большая часть програмеров поверила Солодовникову и дружнo начала протектить свои проги его творением...

Вот и какая-то убитая прога для создания кнопок защищена ASProtect. Caspr естественно не берет это дело, поэтому все надо ручками делать.

Для этого нам надо: Softice, Procdump, Imprec 1.42, exescope

Сначала нужно получить OEP. Самый быстрый способ:
1) делаем копию нашего exe файла
2) открываем копию в Procdump и правим атрибуты первой секции на E0000060 (это позволяет не искать EP и вставлять CC)
3) загружаем копию через symbol loader. Прога будет остановлена четко на EP. Теперь записываем значение ESP на бумажку. у мя было ADFE3C. Закрываем эту копию.
4) теперь bpx mapviewoffile и запускаем оригинальный exe. Сработает bpx mapviewoffile.
5) bc * и bpx getprocaddress. Сработает bpx getprocaddress.
6) bc * и теперь делаем bpr esp-4 esp+4 (ESP это значение ESP в начале проги, которое на бумажку записали). Т.е. я делал bpr ADFE38 ADFE40
7) жмем F5 и ждем... минут максимум через 10 вылезет Softice вот в таком месте :

Popad
Jmp eax

Где eax=oep :) У мя оно вышло = 42C2A0.
Теперь нужен дамп. Так как мы ща перед прыжком на oep то можно зациклить прогу, чтоб не дергалась , снять дамп и импорт. В зацикленом состоянии можно снять дамп procdump'oм. Потом запускаем Imprec и даем ему значение OEP (для тех кто не юзал: oep надо давать без ImageBase т.е. 2C2A0) импорт прекрасно ресолвится. Все чо не найдено находится или через "Disasm" или через "Asprotect Api Emulator" Дописываем импорт в дамп. Дамп работает, но прога все равно работает с ограничениями. У проги есть 2 ограничения:
1) Дописывает надпись "Trial" на экспортируемые рисунки
2) Выводит наги

С нагами бороться - это 5 секунд править. Там одна общая процедура вывода. Правим ее начало на команду RET и все. Т.е. при вызове процедуры нага будет сразу происходить возврат.
А вот с надписью "Trial" чуть сложнее. Берем exescope и открываем дамп. В разделе Bitmap мы найдем эту надпись :) Она под номером 292. Значит это Bitmap. А bitmap загружается через LoadBitmapA. Теперь только остается поставить bpx LoadBitmapA и увидеть как он загружается при экспорте файла. Грузится он вот так:

004095A7: 6824010000                   push        00000124 (это кстати 292)
004095AC: 50                           push        eax
004095AD: FF1584564800                 call        LoadBitmapA
Стоит только сделать из push 124 - push 0 и надпись пропадет.
Все!


<= Вернуться к статьям


Rambler's Top100