Исследование защиты программы AttributeMagic Pro
Скриншот программы AttributeMagic Pro
Программа AttributeMagic Pro предназначена для пакетного изменения атрибутов файлов, даты создания, модификации и последнего изменения, переименования файлов на основании этих данных, а также изменения даты файла на основании EXIF-данных изображения (дата съемки). Польза от программы весьма сомнительная, особенно за эту цену, но сегодня нас интересует не программа, а поиск уязвимостей в ее защите.
Скачиваем дистрибутив, распаковываем, устанавливаем. Первичный осмотр файла показывает, что он вроде как ничем не упакован - все текстовые строчки в открытом виде, секции кода и ресурсов не сжаты и т.п. Но смущает наличие секций "upx0" и "upx1". Ни один компилятор не создает автоматически секции с такими именами, но и на сам UPX это совсем не похоже.
Названия секций PE-файла
Содержимое этих секций еще более подозрительное, сплошная мешанина из кода, а анализаторы исполняемых файлов молчат как партизаны. По опыту реверсинга могу с уверенностью сказать, что перед нами VMProtect, один из самых серьезных протекторов на сегодняшний день, а переименованием секций убираются ложные срабатывания некоторых антивирусов. Что ж, глаза боятся, а руки делают, поищем слабые места и ошибки в защите. Загоняем файл в дизассемблер, а параллельно посмотрим в программе как проявляется триал. При запуске показывается наг-скрин с предложением зарегистрироваться, а в окне "About" написано "Unregistered".
Окно "О программе"
Отлично, поищем эту строчку в файле и условия ее появления в дизассемблере. Поиск приводит нас вот к такому коду:
Code (Assembler) : Убрать нумерацию
- ...
- .text:006528F6 mov eax, off_67EDEC
- .text:006528FB mov eax, [eax]
- .text:006528FD xor edx, edx
- .text:006528FF mov ecx, [eax]
- .text:00652901 call dword ptr [ecx+6Ch]
- ; Вызвать функцию проверки регистрации
- .text:00652904 call sub_5A8954
- ; Если она вернула взведенный бит, то программа не зарегистрирована
- .text:00652909 test al, 2
- .text:0065290B jnz short loc_652920
- .text:0065290D mov eax, off_67EDEC
- .text:00652912 mov eax, [eax]
- .text:00652914 mov edx, offset aRegistered ; "Registered"
- .text:00652919 call sub_6491A0
- .text:0065291E jmp short loc_652931
- .text:00652920 ; --------------------------------------------
- .text:00652920 loc_652920:
- .text:00652920 mov eax, off_67EDEC
- .text:00652925 mov eax, [eax]
- .text:00652927 mov edx, offset aUnregistered ; "Unregistered"
- .text:0065292C call sub_6491A0
- ...
Code (Assembler) : Убрать нумерацию
- ; Переход в секцию VMProtect
- .text:005A8954 call sub_8582AF
- .text:005A8959 db 67h
- .text:005A8959 mov eax, eax
- .text:005A895C push ebp
- .text:005A895D mov ebp, esp
- .text:005A895F push ecx
- .text:005A8960 mov [ebp-4], eax
- .text:005A8963 push offset dword_5A8984
- ; Переход в секцию VMProtect
- .text:005A8968 jmp loc_87DA0A
- ...
Программа успешно "зарегистрирована"
Наг-окно пропало, пункт о регистрации в меню стал неактивным, а в окне "О программе" написано "Registered". Все прекрасно работает, наша цель достигнута. А любителям разных говнопротекторов я рекомендую пересмотреть свои взгляды на жизнь.
Просмотров: 6793 | Комментариев: 6
Метки: исследование защиты
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(29.01.2012 в 22:10):
Это лишь частный случай, без упаковки и с совершенно неграмотным использованием возможностей говнопрота. Если его правильно навесить, то так легко с ним уже не разделаться.
Dimas, как обычно, IDA и HiEW, больше ничего не надо. А, ну и голова, конечно, тоже.
Dimas, как обычно, IDA и HiEW, больше ничего не надо. А, ну и голова, конечно, тоже.
ledhead
(29.01.2012 в 16:33):
А я, глупыш, с VMprotect возился...
ManHunter, элегантно, как всегда, данке шон.
P.S. Отдельное спасибо за описание отпуска, очень познавательно.
С уважением.
ManHunter, элегантно, как всегда, данке шон.
P.S. Отдельное спасибо за описание отпуска, очень познавательно.
С уважением.
Dimas
(29.01.2012 в 15:30):
Блин я как вижу говнопрот, руки опускаются - а тут с говнопротом аффтара опустили ;-)
Интересно vmprotect ворованный или нет ?
И еще под чем исследовали, какие плугины применяли ?
Статья полный атас
Интересно vmprotect ворованный или нет ?
И еще под чем исследовали, какие плугины применяли ?
Статья полный атас
Zhelezyaka
(29.01.2012 в 10:24):
Эка ты их подковырнул, типа ткнул носом в изъян. )
Спасибо.
Спасибо.
Exit
(29.01.2012 в 02:23):
ManHunter, Браво!
Это было красиво!
PS давно и с большим удовольствием читаю твой блог ))
Это было красиво!
PS давно и с большим удовольствием читаю твой блог ))
Добавить комментарий
Заполните форму для добавления комментария
ManHunter, брависимо !
Это, кстати, не единичный случай кривого "навеса" говнопротекторов.
Кто в теме, то сразу вспомнит известного чела и его софт (не буду уточнять), который спрятал функции проверки кода под нехило запутанную ВМ + обфускацию, а в итоге сравнение серийников оказалось за бортом всего этого фарша и даже новичек, первый раз увидивший отладчик мог получить серийничек под себя.