Button Up
RU EN

Разработка ПО: защита от промышленного шпионажа

12.12.2011
промышленный шпионаж
 
Затраты на разработку программы составляют значительную, если не большую часть бюджета компании-производителя ПО. Именно дороговизна разработки побуждает осуществлять промышленный шпионаж за разработками конкурентов и обуславливает высочайшую конкуренцию в отрасли. Меньше всего хочется, чтобы уникальный продукт был изучен и модифицирован третьими лицами. Чтобы защититься от конкурентов в течении всего жизненного цикла продукта и предотвратить потерю прибыли, программы необходимо защищать от анализа и взлома, дабы максимально осложнить процесс понимания принципов работы программы и ее алгоритмов.

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

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

Сегодня реверс-инжиниринг становится наиболее популярным способом анализа приложений. Международная организация производителей банкоматов ATMIA называет именно реверс-инжиниринг как основную угрозу для программной среды банкоматов.

В его основе лежит постулат "Запретный плод сладок". Этот принцип на практике выражается в том, что взлом программы, исходный код которой тебе не известен, - самый интересный и мотивирующий тип взлома. Причин для того, чтобы начать исследовать чужую программу, может быть много. Другое дело, что иногда требуется защитить собственную программу от исследования, чтобы никто не смог ее повторить, изменить или дополнить в кратчайшие сроки. Ведь помимо потери уникальных наработок, вы рискуете снизить прибыль или вообще сделать разработку невыгодной. Кроме того, возможно испортить себе репутацию - кто знает для чего и как будут использованы модифицированные компоненты программы.

Эффективным способом решения проблемы представляется защита исполняемого кода приложения от анализа и модификации.

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

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

С помощью запутывания можно перемешать в программе куски кода или действия так, что логика работы становится совершенно непонятной. Кроме того, при запутывании идентификаторы меняются с читаемых на индексные, вставляются новые куски неисполняемого кода. Иногда при защите программного продукта используется архивация данных программы, которые находятся в стеке (область памяти, где хранятся данные программы). Для предотвращения пошагового выполнения программы, а соответственно и отладки, стек определяют в ее тело. А если там находятся данные для работы, то процесс анализа усложняется еще больше. Для усложнения работы взломщиков в исполняемый код встраиваются "пустышки", которые выполняют некоторую сложную и на первый взгляд важную работу, но на самом деле не имеют никакого отношения к логике работы. Еще один вариант запутывания исполняемого кода – шифрование содержимого файлов данных, сами защищенные файлы при этом переносятся в защищенный контейнер. Особенностью защищенного контейнера является то, что к нему можно обращаться только из защищенного приложения.

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

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

В любом случае следует обратиться к специалистам и получить консультацию по тому, как лучше всего подойти к защите той или иной программы в том или ином случае. Универсальные рекомендации приведены в данной статье, однако для каждой бизнес-модели детали могут варьироваться. Например, в некоторых случаях может иметь смысл не защищать всю программу целиком, а только отдельные ее части, наиболее критичные с точки зрения уникальных алгоритмов и интеллектуальной собственности авторов. На российском рынке существуют компании, которые работают в данной области по нескольку лет и накопили достаточный опыт по противодействию реверс-инжинирингу.

О компании StarForce

Компания «Протекшен Технолоджи» (торговая марка StarForce) – ведущий российский разработчик программных решений в области контроля и защиты программ и электронной информации от утечек, копирования и нелегального распространения. С 2000 года компания разрабатывает и внедряет ультрасовременные технологические решения, защищенные соответствующими патентами РФ, США и Канады, что позволяет обеспечить охрану интеллектуальной собственности и авторских прав во всем мире.

Являясь экспертом в области защиты цифровой информации и программного обеспечения от утечек, копирования, взлома и несанкционированного распространения, компания разработала собственную систему Управления Цифровыми Правами (StarForce DRM), открывающую перед нашими клиентами широчайшие возможности по доставке цифрового контента и слежению за продажами. Технологии StarForce внедрены в таких компаниях как РЖД, Corel, 1С, Mail.ru, Аэрофлот, SUN InBev Russia, АМД Лаборатории, ATC International, МедиаХауз, Руссобит-М, Новый Диск, Бука, Snowball, 2Play, GFI, CENEGA, Akella и в ряде других.

Контакты для прессы:
pr@star-force.com

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