IT-Блог о программировании и операционных системах

Защита Delphi-программ от взлома. Часть III – Навесная (часть1)

В этой части рассмотрим ещё одну технику защиты приложений, а именно мы рассмотрим некоторые навесные защиты.

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

Что означает “защита программного кода”? Это просто комплекс мер, призванный для того, чтобы вашу программу было труднее взломать. Например, это может быть подмена устойчивой сигнатуры, при помощи которой программы – анализаторы (типа PEiD, DiE) узнают, чем защищена программа или на чём она написана. Большое число антиотладочных приёмов и хитростей.

Продвинутый протектор может например зашифровать секции, или поубивать процессы известных крякерских инструментов. Вообщем, цель протектора – сделать всё и как можно больше, для того, чтобы по максимуму затруднить взлом.

Themida (Фима, Фимка, Фемида)

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

Themida была разработана, чтобы полностью отсеять новичков, а также опытных крекеров от взлома ваших программ, что позволяет избежать значительных потерь доходов от распространения кряков и кейгенов.

Некоторые полезные возможности данного протектора:

  1. Антиотладочные техники против любого вида отладчиков.
  2. Антидемпинговые техники, против любых ring3 и ring0 дамперов.
  3. Разные шифровальные алгоритмы.
  4. Защита против API-сканнеров, которая предотвращает восстановление оригинальной таблицы импорта.
  5. Антидизассемблерные техники против любых статических и интерактивных дизассемблеров.
  6. Улучшенная техника защиты оригинальной точки входа (OEP)
  7. Защита против патчинга памяти процесса и CRC
  8. Метаморфный движок, для защиты кода
  9. Динамическое шифрование вашего приложения
  10. Сжатие кода приложения, секции ресурсов, а также и кода распаковщика.
  11. И многое другое…

Наиболее интересные опции защиты:

Anti-debugger detection. Данная опция включает обнаружение отладчика в системе. Отладчик уровня ядра или пользователя – неважно! Примечание: если опция в положении Ultra, может вызывать некоторые проблемы, особенно если файл заражён вирусом, также, эта опция может быть несовместима с платформами отличными от Windows.

Anti-dumpers. Как вы знаете, одним из самых опасных инструментов против защищённой (запакованной) программы является дампер памяти. Взломщик может скинуть в файл распакованный код и данные, а затем попытаться восстановить его в первоначальный вид (до расспаковки). SecureEngine предлагает много техник защиты от сдампливания. Эта опция включает наиболее действенные техники нацеленные против дампа памяти в файл на диск.

Resources Encryption. Шифрование ресурсов программы. Если включить эту опцию, то движок SecureEngine зашифрует все ресурсы так, чтобы взломщик не смог проанализировать и\или изменить их. Распаковка ресурсов происходит тогда, когда этого потребует ваше приложение.

VMWare / Virtual PC. Опция позволяет предотвратить запуск вашего приложения на общеизвесных эмуляторах, таких как VMWare, Virtual PC, Virtual Box или Microsoft VM.

Advance API-Wrapping. Эта опция позволяет включить упаковку API, что не позволит взломщику идентифицировать используемые в приложении функции. Можно выбирать уровень упаковки. Имейте ввиду, что чем выше уровень упаковки, тем большее процессорное время затрачивается для оной! Например, использование этой функции с уровнем “2” может в несколько раз уменьшить время запуска вашего приложения!

Anti-Patching. Предотвращает попытки запуска измененной копии программы. То есть, если например файл заражён вирусом, или его изменил взломщик, Themida это распознает и покажет окно (которое кстати тоже можно настроить), что мол файл изменён и всё такое, а затем завершит выполнение.

Metamorph Security. Эта опция позволяет изменить все инструкции защитного кода на другие, но одинаковые по действию. Это затрудняет взломщику процесс распознания устойчивых кусков кода защиты.

Delphi/BCB form protection. Защита форм приложений, которые скомпилированы в Делфи или Билдере. Взломщик не сможет извлечь информацию о формах с помощью специальных инструментов.

 

Themida поддерживает ещё достаточное количество приёмов и функций, о которых можно узнать обратившись к справочной системе. Themida по праву считается одним из самых сильных протекторов, который способен помочь вам защитить ваши продукты от взлома. К сожалению, на тематических форумах появляется всё больше и больше сообщений о том, что фемида взломана. Появляются статьи и видео, которые показывают нам, как ее снять. Но нужно отдать должное – продукт развивается, в отличии например от Armadillo, которая по словам крекеров, умерла.

 

Замечание: Themida не поддерживает упаковку динамических библиотек, которые статически прилинкованы к проекту. Придётся использовать динамическое связывание.

 

VMProtect

Отечественная разработка от компании VMPSoft. Как видно из названия, главной (но далеко не единственной) фишкой данного протектора является выполнение кусков кода на виртуальной машине. Как утверждает описание продукта, архитектура виртуальной машины кардинально отличается от обычных процессоров, что делает использование большинства крэкерских инструментов совершенно бессмысленным.

Хорошей особенностью является то, что в VMProtect встроена своя система лицензирования, которая позволяет генерировать и проверять серийные номера.

VMProtect можно совместно использовать с другим протектором или упаковщиком. Эта возможность помогает ещё сильнее защитить Ваше приложение.

Некоторые возможности VMProtect

Виртуализация кода. В отличии от большинства защит, которые шифруют исполняемый код программы, а потом, перед исполнением основного кода расшифровывают его, VMProtect никогда не расшифровывает код программы. VMProtect переводит исполняемый код программы в код, который работает только на виртуальной машине. Набор команд этого процессора не имеет ничего общего с системой команд x86 & x64 и может меняться с каждой защитой программы.

Форматы файлов. Данный протектор позволяет защищать как исполняемые модули, так и динамические библиотеки (DLL, OCX, BPL), а также драйверы (SYS).

Поддержка 64-битных платформ.

Система лицензирования. Как я говорил, VMProtect позволяет генерировать и проверять серийные номера. Серийные номера могут ограничиваться по сроку действия, могут привязываться к железу. Также интересной особенностью VMProtect является то, что он может сделать физически невозможным запуск программы в отсутствии серийного номера.

К сожалению, уже даже к последней версии этого протектора китайцы написали автораспаковщик (в лице скрипта для олли). Но кто сказал что это идеальная защита? Протектор реально помогает только тогда, когда и код программной защиты (Ваш) написан грамотно.

Вердикт: Достаточно хороший протектор исполняемых файлов, который в состоянии дать отпор взломщику начального и среднего уровня.

Приложение 1

Статья, которая обьясняет некоторые приёмы использования VMProtect для защиты делфи-приложения. Тыц.

 

Ещё парочку приличных протекторов мы рассмотрим в следующей части.

11 комментариев:

  1. Спасибо за интересные статьи.
    Какой примерно % взломщиков может отсеить использование этих протекторов?

    ОтветитьУдалить
  2. Ну в процентном соотношении сказать очень непросто. Отсеивают взломщиков начального (например, если взломщик умеет снимать ASProtect, с этими он не справится...) уровня, а также среднего (с учётом если он не специализируется на распаковке. Есть такое направление). Да и среди опытных есть те, которые ломать не будут, просто из за лени )) Но ещё стоит хорошо понимать, что если софт нужный и востребованный, то распакуют и сломают обязательно - факт.

    ОтветитьУдалить
  3. Спасибо и вам Алексей, за то, что читаете мой блог )

    ОтветитьУдалить
  4. От Фемиды я отказался сразу, попробуйте защитить ей файл (даже на минимуме настроек - а тогда зачем они нужны?!) и проверить антивирусом или на вирустотал. Думаю пользователи не будут рады.

    VMProtect как-то пробовал, но не сильно "защитился" (например, прочитал файлы форм редактором ресурсов), может просто не правильно что-то делал.

    :)

    ОтветитьУдалить
  5. >> От Фемиды я отказался сразу, попробуйте защитить ей файл (даже на минимуме настроек - а тогда зачем они нужны?!) и проверить антивирусом или на вирустотал. Думаю пользователи не будут рады.

    Это происходит из за того, что большинство сегодняшних троянов криптуются именно этим протектором, чтобы антивирусы обмануть, ведь чтобы анализатор мог проверить код, его нужно распаковать, а распаковка фемиды - дело неблагодарное. Вот и суют в свои аверы разработчики сигнатуры пакеров да протекторов и получаются всякие Win32/Packed.Themida и подобные штуки. Решается довольно просто. Письмо в саппорт авера о ложном срабатывании (они любят, когда на них обращают внимание ;) ) или добавление в исключения (что выход только на своей машине, так что лучше письмо в саппорт).

    >> VMProtect как-то пробовал, но не сильно "защитился" (например, прочитал файлы форм редактором ресурсов), может просто не правильно что-то делал.

    Скорее всего неправильно что-то делали :)

    Спасибо вам за комментарий!

    ОтветитьУдалить
  6. > Письмо в саппорт авера о ложном срабатывании (они любят, когда на них обращают внимание ;) ) или добавление в исключения (что выход только на своей машине, так что лучше письмо в саппорт).
    Так это придется разослать в каждую антивирусную компанию + я сомневаюсь что это будет действовать для следующих билдов.

    > Скорее всего неправильно что-то делали :)
    Буду смотреть )

    Еще советую посмотреть http://www.syncrosoft.com/ и http://www.billeniumsoft.com/ctd/ ну и ASProtect для общего сравнения.

    ОтветитьУдалить
  7. >> Так это придется разослать в каждую антивирусную компанию + я сомневаюсь что это будет действовать для следующих билдов.

    Серьёзно, реальная практика. Много раз на форумах AV видел как разработчики жалуются на ложные срабатывания. Их просят прислать файл или сигнатуру (если кто знает), сами добавляют его в исключения.

    >> я сомневаюсь что это будет действовать для следующих билдов.

    Для следующих билдов будет действовать, так как антивирусы различают протекторы по устойчивой сигнатуре.

    >> http://www.syncrosoft.com/

    Не получилось скачать white-box ( Не вижу где скачать вернее (

    ОтветитьУдалить
  8. с VMProtect'ом и фолсами проблема достаточно просто решается:
    - само использований _купленойю_ версию(не демо и не скарженой) - уменьщает вероятность сильно
    (вот пример того как VirusTotal на навешенный на свежую сборку VMProtect Ultra 2.05 реагирует - http://www.virustotal.com/analisis/7287af0af435e16914da90742adf02ee2ed7e6b3710f86403b6892e107cc3308-1279005026)
    - отписываемся у них на форуме - автор решает проблемы с фолсами...

    p.s.IntelliProtector никто не использовал?насколько там плохой уровень защиты(именно защиты)

    ОтветитьУдалить
  9. Спасибо за информацию Дмитрий. Насчёт защиты интеллипроткора информации никакой нет.

    На SQL.ru говорили, что антивирусы реагируют на него только те, которых никто в глаза не видел (проверяли на вирустотле). Вот...

    ОтветитьУдалить
  10. помогите ктот с софтом! нужен "кряк" не за бесплатно! скайп -spike0220

    ОтветитьУдалить