Авторизация
Логин:
Пароль:
Регистрация
Забыли свой пароль?
Фото дня

Armadillo - описание защиты и способы ее обхода

01.12.2010 Armadillo - общее описание защиты и способы ее обхода.

Недавно имел возможность по вечерам вскрывать защиту для конвертора Sothink Encoder for Adobe v3.1, который позволяет перекодировать видеоконтент в формат .flv необходимый для большинства проигрывателей .swf и хотел бы здесь поделиться со всеми своими впечатлениями...

Защита интересна хотя бы по тому, что содержит в себе несколько самых эффективных антиотладочных приемов:
  1. Замечательные анитотладочные приемы, которые обнаруживают отладчик и либо пускают программу по ложному следу либо завершают работу программы.
  2. Самомодифицирующийся код с использованием упаковщика.
  3. Загрузка в память библиотеки защиты прямо из того же исполняемого кода, через которую выполняются вся работа по проверке ключей (т.е. файла этой библиотеки Вы на диске не найдете).
  4. Многопоточная система контроля выполнения кода, которая в некоторых случаях позволяет либо обмануть отладчик, либо определять что он присутствует в системе.
  5. Ну и замечательный прием, завязанный на понижение производительности программного кода при наличие отладчика. Это происходит после того как мы добавляем видео файл. Его обработка происходит бесконечно долго при трассировке...
Инструментарий необходимый для вскрытия этой защиты:
  1. Распаковщик Armageddon  который снимает значительное количество защит автоматически и к тому же позволяет без особых проблем делать патчи в файле напрямую. Это несколько увеличивает размер файла, но зато значительно упрощает работу.
  2. Отладчик OllyDbg 1.1 (желательно с плагинами, позволяющими обходить некоторые антиотладочные приемы). Иногда более корректно, особенно прикрепляться к работе приложения помогает вторая версия OllyDbg 2.01
Первым делом нам необходимо найти все библиотеки защиты ArmAccess.DLL, как например вот этот:
004BAC2B  |> 68 6C736600    PUSH flvenc2_.0066736C                   ; /FileName = "ArmAccess.DLL"
Таких мест в программе может быть два или три. После чего необходимо отследить вызовы этих процедур и через одну процедуру наверх мы обнаруживаем операции сравнения, которые и необходимо изменить. Для того чтобы поймать событие OnLoadLibrary в модуле kernel32.dll необходимо в OllyDbg задействовать хардверные прерывания взамен обычным Int3, что позволит избежать всяческих падений, а также некоторых антиотладочных приемов.

Сотворили патчи отключающие проверки...
04050D8    1.   Active    JE flvenc2_.004051C0              NOP
004050E5     и здесь тоже...
Патчи на активацию при старте прогрмммы...
004BAEF7     6.   Active    JE flvenc2_.004BAFD9              NOP
004BAF16     6.   Active    JE flvenc2_.004BAFD9              NOP
004BAF2C     6.   Active    JNZ flvenc2_.004BAFD9             NOP
004BAF3C     6.   Active    JE flvenc2_.004BAFD9          NOP
Патчи на проверку перед конвертацией файла, т.е. после добавления файла. Для того, чтобы поймать вызов библиотеки защиты из этих мест проще всего присоединиться к приложению с уже добавленным файлом для конвертации или искать все вызовы процедуры в которой создается защитная библиотека.
0040EBFC  |. 74 21          JE SHORT flvenc2_.0040EC1F        NOP
0040EC05  |. 74 18          JE SHORT flvenc2_.0040EC1F        NOP

По правде говоря, мне прежде чем найти такой способ пришлось сначала изрядно понаблюдать на механизмы контроля событий окон между разными потоками, а также механизм общения с сайтом для активации регистрационного номера, но это в основном был конечно полезный опыт :)
Итак, наслаждаемся результатами работы программы без ограничений.

Автор: Терентьев Константин Михайлович.

Видео ролик: 
Загрузка плеера

Количество показов: 14421

Возврат к списку

(Голосов: 3, Рейтинг: 3.56)

Материалы по теме:


Ваше имя:
Смайлики
С улыбкой  Шутливо  Широкая улыбка 
Здорово  Печально  Скептически 
Очень грустно  Со злостью  Удивленно 
Смущенно  Поцелуй  Вопрос 
Восклицание  Идея 
Защита от автоматических сообщений:
Защита от автоматических сообщений Символы на картинке: