Защита приложений::Журнал СА 12.2013
www.samag.ru
Журнал «БИТ. Бизнес&Информационные технологии»      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
1001 и 1 книга  
19.03.2018г.
Просмотров: 7314
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 7615
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4989
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3246
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 4049
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 4045
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6551
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3394
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3674
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7534
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10905
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12621
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14356
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9351
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7307
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5598
Комментарии: 4
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4823
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3662
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3356
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3578
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3251
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Защита приложений

Архив номеров / 2013 / Выпуск №12 (133) / Защита приложений

Рубрика: Карьера/Образование /  Пятая пара

Михаил Ушаков МИХАИЛ УШАКОВ, разработчик электронной аппаратуры и программного обеспечения для ядерной гамма-резонансной спектроскопии, Уральский федеральный университет, um.nix.user@gmail.com

Защита приложений

Как защитить программный код? Этому не учат на университетских курсах. Однако эта задача рано или поздно встает перед любым разработчиком!

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

Можно выделить два основных направления: защита программ от несанкционированной установки/копирования и защита исходного кода приложений и библиотек от кражи/копирования.

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

Существует достаточно большой набор коммерческих решений для защиты программ, например, StarForce, система защиты DVD CSS, система защиты Blu-ray дисков Advanced Access Content System, привязка к электронному ключу HASP и другие. Готовые решения позволяют относительно быстро вывести продукт на рынок, но в большинстве случаев их использование имеет ряд недостатков:

  • Популярные готовые решения, вероятно, были неоднократно взломаны при снятии лицензии с программных продуктов, поэтому набор их защитных механизмов хорошо известен специалистам по взлому.
  • Использование DRM-продуктов (Digital Rights/Restrictions Management), приводящих к модификации PE-файлов (про ELF мы говорить не будем, поскольку по понятным причинам механизмы защиты не получили широкого распространения в мире Linux), и динамических библиотек автоматически приводит к увеличению числа ошибок в программе за счет ошибок в DRM-модуле (см. [1]).
  • Механизмы DRM нарушают права пользователей и ограничивают их свободы. Ричард Столлман в книге «Право читать» так охарактеризовал DRM: «…DRM is an example of a malicious feature – a feature designed to hurt the user of the software, and therefore, it’s something for which there can never be toleration…» («...DRM – пример вредоносного ПО. Оно призвано нанести вред пользователю, и, таким образом, с его существованием нельзя мириться ни при каких обстоятельствах».) DRM также может нарушить работу других программ, что негативно скажется на репутации защищаемого программного продукта.

Наилучшим вариантом является такая защита, которая не наносит вреда другим программам на компьютере пользователя и не ограничивает его свободу.

Это:

  • Использование обфусцированного кода в библиотеках и программах и минимальной защиты лицензией, то есть такой защиты, которая позволит оградить продукт от копирования опытными пользователями.
  • Если планируется распространять демо-версию программы, то в ней должна быть удалена функциональность, которая будет в полной версии программы.
  • Использование приложения как сервиса на сервере приложений (например, JBoss Geronimo и т.д.) с предоставлением доступа через, например, тонкий клиент или REST API (см. рис. 1).

Рисунок 1. Современный подход: использование приложения как сервиса

Рисунок 1. Современный подход: использование приложения как сервиса

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

Если программа не имеет никакой защиты...

Компиляция программ, написанных на управляемых языках, таких как С#, Java и им подобных, происходит дважды: в промежуточный код (байт-код Java или MSIL для платформы NET) и в машинные инструкции (последнее не обязательно).

Для того чтобы JIT (just in time compilation) смог правильно обработать сгенерированный код, компилятор генерирует метаданные для описания интерфейсов, классов и методов. Без наличия метаданных компиляция байт-кода или MSIL-инструкций невозможна.

Работа с метаданными производится через пространство имен System.Reflection в .NET (начиная с версии 1.1) или через пакет java.lang.reflect в Java.

Статью целиком читайте в журнале «Системный администратор», №12 за 2013 г. на страницах 86-91.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru