Как защитить приложение от копирования
как сделать так что прога была защишена от копирования с диска и с компа. И как сделать так чтоб прога требовала код активации!
Защита ПЗ от копирования
Как создать привязку к свободному месту диска?
Защита от копирования
Собственно вот, что нужно: 1 шаг:запускается окно в нём имеются 2 текстовых поля, в первом.
Защита файлов от копирования
Подскажите, А такую схему можно реализовать для любых типов файлов. и как клиент даст ID? Это.
Защита от несанкционированого копирования через сервер активации
Подскажите алгоритм работы для клиент-сервера для защиты от НСК. Приблизительный алгоритм: 1.
Решение
Делаешь в проге метод, который вычисляет ID процессора и выдает его пользователю (рисунок 1). Пользователь звонит разработчику (пишет в мыло, отправляет голубем, с посыльным . неважно) и сообщает свой ID. Разработчик зарание разработал себе еще и кейген, который на основании некоего алгоритма преобразует полученый ID в какое-либо кодированное значение. Полученный код разработчик дает пользователю. Пользователь вносит его в соответствуещее окно в программе. Программа проверяет его на соответствие (алгоритм обратный кейгену) и, если все нормально, сохраняет (в файл или реестр). Потом при каждом запуске происходит сверка полученного кода с ID процессора. Если код не подошел, значит перенесли на другой комп, или процессор поменяли (маловероятно), прога вырубается.Решение
только для того, чтобы данный метод работал нужно защитить свою программу от отладки с помощью рефлектора, потому что легко узнать твой алгоритм сравнения присланного тобой ключа с правильным.
я использую USB ключи, на которых храняться зашифрованные данные для работы с программой, фоновая проверка ключа из др потока программы, запутываению вызовы из разных мест, отложенное завершение, время которого задается рандомно
иногда даже храню на ключе часть алгоритма.
сравнивать контрольные суммы файла.
ну и конечно обертка для exe, чтобы предотвратить отладку.
вообщем методов эффективной защиты много, все не перечесть. главное побольше их и запутавать.
минусы данного решения - стоимость ключа
nio, kenny69, можете скинуть примеры защищенных программ (только exe), для исследования?:-[
Делаешь в проге метод, который вычисляет ID процессора и выдает его пользователю (рисунок 1). Пользователь звонит разработчику (пишет в мыло, отправляет голубем, с посыльным . неважно) и сообщает свой ID. Разработчик зарание разработал себе еще и кейген, который на основании некоего алгоритма преобразует полученый ID в какое-либо кодированное значение. Полученный код разработчик дает пользователю. Пользователь вносит его в соответствуещее окно в программе. Программа проверяет его на соответствие (алгоритм обратный кейгену) и, если все нормально, сохраняет (в файл или реестр). Потом при каждом запуске происходит сверка полученного кода с ID процессора. Если код не подошел, значит перенесли на другой комп, или процессор поменяли (маловероятно), прога вырубается.НЕ подскажите как мне этот ID процессора вычислить!? можноли где нибудь готовый кейген взять!? или как его написать!?
Добавлено через 2 минуты
только для того, чтобы данный метод работал нужно защитить свою программу от отладки с помощью рефлектора, потому что легко узнать твой алгоритм сравнения присланного тобой ключа с правильным.
я использую USB ключи, на которых храняться зашифрованные данные для работы с программой, фоновая проверка ключа из др потока программы, запутываению вызовы из разных мест, отложенное завершение, время которого задается рандомно
иногда даже храню на ключе часть алгоритма.
сравнивать контрольные суммы файла.
ну и конечно обертка для exe, чтобы предотвратить отладку.
вообщем методов эффективной защиты много, все не перечесть. главное побольше их и запутавать.
минусы данного решения - стоимость ключа
Ну USB ключи в моём конкретном случай это перебор!
А вот про "обертка для exe, чтобы предотвратить отладку. " поподробней если не затруднит
Добавлено через 51 секунду
nio, kenny69, можете скинуть примеры защищенных программ (только exe), для исследования?:-[
По статистике, приведенной в исследовании 2018 BSA Global Software Survey:
- Нелицензированное (пиратское) ПО составляет 37% от всего объема программного обеспечения, установленного на персональных ПК по всему миру.
- Стоимость контрафактного ПО оценивается в $46 млрд.
- Malware, которыми заражены многие пиратские программы, загружаемые из сторонних источников, обходятся бизнесу в $359 млрд в год.
- Потери от взлома лицензионного ПО составляют порядка $600 млрд ежегодно.
Skillbox рекомендует: двухлетний практический курс «Я — веб-разработчик PRO».
Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».
Разработчики программного обеспечения, которые создают платные продукты, вряд ли хотят потратить несколько лет своей жизни на программу, которую тут же взломают и станут использовать бесплатно. Проблемой могут стать и репутационные потери: например, при загрузке взломанного ПО определенной компании, которое заразит ПК пользователя внедренным злоумышленником вирусом, жертва, вероятно, будет обвинять в происшедшем не взломщика, а производителя.
Что касается доходов, то по данным BSA бизнес, который решит серьезно отнестись к защите своих программных продуктов, может рассчитывать на повышение прибыли примерно на 11% (впрочем, важно понимать, что это среднее значение).
Но что можно сделать для защиты своего ПО?
Есть много различных решений для лицензирования и защиты программного обеспечения. Прежде чем выбрать какой-то для себя, стоит ответить на несколько важных вопросов.
Во-первых, необходимо определиться с тем, какой уровень защиты может понадобиться вашему конкретному проекту. Не стоит палить из пушки по воробьям, выбор должен быть адекватным. Многие разработчики совершают здесь ошибку, используя более мощную (и дорогую) защиту, чем в действительности нужно.
Во-вторых, нужно спросить себя, сколько вы готовы потратить на защиту. Ответ может быть сложным, поэтому, чтобы сделать правильный выбор, стоит проанализировать то, что может понадобиться именно вам.
Затем, когда вы со всем определитесь, можно начинать выбирать защиту, исходя из стратегии использования программного продукта.
Ключевые элементы защиты
Все начинается с выбора принципа лицензирования: необходимо выбрать, как за ваш продукт будут платить. Существует множество разновидностей, в целом их можно разделить на четыре типа:
- Одноразовый платеж. За ваше ПО платят раз, после чего могут пользоваться неограниченное время.
- Функциональные ограничения. Дополнительные возможности пользователь может открыть за дополнительную плату.
- Временная лицензия. Вы «сдаете приложение в аренду», то есть речь идет о подписке.
- Многоуровневая. Представляет собой комбинацию названных методов. Пользователь получает Silver-, Gold- или Platinum-версию ПО при соответствующей оплате.
Еще раз подчеркнем важность выбора адекватной защиты. Если вы собираетесь защитить свой велосипед методом, который применяется в Форт-Ноксе, это вряд ли можно назвать разумным. Есть и обратная зависимость: если хотите защитить Форт-Нокс, не используйте для этого велосипедный замок, это бесполезно, взлом гарантирован. В целом, стратегия лицензирования должна соответствовать цене самого продукта.
Виды защит
Как и говорилось выше, есть различные опции для защиты ПО от взлома и копирования. Эти опции могут отличаться по стоимости, уровню защиты и специализации.
Защита по «доверию». Здесь вы рассчитываете на то, что пользователи будут платить без всяких проблем. Один пользователь — одна лицензия, вечная. В принципе, затрат с вашей стороны практически нет. Как только приложение скомпилировано, его можно начать распространять. Но проблема в том, что если ваш продукт станет популярным, то кто-то точно его взломает, начав раздавать. Защиты от взлома в таком случае нет, она нулевая.
Офлайн-программная защита
Речь идет о защите без подключения к интернету. Обычно реализуется такая схема сразу после компиляции программы. Чаще всего используется программная оболочка с определенными настройками. Защищенная программа не подключается для проверки целостности ни к каким внешним серверам. В принципе, обойти такую защиту можно без всяких проблем.
Онлайн-программная защита
Здесь уже речь идет о более серьезном методе — проверке лицензии при помощи сервера лицензирования. В этом случае требуются относительно высокие затраты в начале и периодические расходы позже. Как и в предыдущем варианте, используется программная оболочка, но параметры лицензирования чекаются и настраиваются в онлайне.
При желании можно добавить опции проверки ПО: как используется, есть лицензия или нет. Если требуется постоянное подключение к сети, то продукт, скорее всего, будет работать не всегда и не везде.
Степень серьезности такой защиты — между средним и высоким уровнем.
Аппаратная защита
Один из наиболее надежных методов, который сочетает в себе преимущества всех прочих стратегий. За лицензирование отвечает электронный USB-ключ, которому не требуется подключение к сети. Цена каждого ключа для разработчика низкая, нет периодических дополнительных трат. Реализовать можно как при помощи API, так и посредством программной оболочки.
Достоинством такого метода является то, что лицензию можно убрать за пределы операционной системы, ключ хранится вне ПК. Ключ либо очень сложно, либо вообще невозможно скопировать. ПО, которое защищено при помощи аппаратного ключа, может использоваться на тех системах, где нет подключения к сети. Это, к примеру, правительственные объекты или промышленность. Еще один плюс в том, что электронному ключу не требуются различные решения для разных программных сред, а возможности лицензирования очень гибкие.
Решения на основе аппаратного ключа можно развернуть буквально за минуты, они поддерживаются практически любыми версиями операционных систем.
Правда, помните, что поставщик решения (если вы не можете создать аппаратный ключ самостоятельно) должен делать все быстро, чтобы не возникла необходимость ожидать партии ключей и, соответственно, переноса старта продаж вашего ПО. Также поставщик должен предоставить простое и эффективное решение, которое быстро разворачивается. Конечно, вы должны доверять поставщику — в противном случае его услугами пользоваться не стоит.
О защите ПО стоит подумать еще на стадии проектирования: после того как проект готов частично или полностью, изменить что-то будет непросто.
Уровень пиратства в экосистеме Android таков, что говорить об этом нет никакого смысла. Приложение не только легко украсть — его легко взломать, отвязать от сервисов проверки, отключить рекламу или даже внедрить в него бэкдор. Выкладывая свое творение в Play Store, ты рассчитываешь получить прибыль, а в результате даришь любителям вареза еще один хороший продукт. К счастью, с этим вполне можно бороться.— Как украсть приложение для Android?
— Берешь и крадешь.
Для рубрики «Взлом» я написал цикл статей, в которых наглядно показал, насколько на самом деле легко взламываются приложения для Android. Для этого не нужен даже дизассемблер, достаточно поверхностных знаний Java и языка Smali. Поэтому, если твое приложение будет достаточно популярно, знай: его украдут и путем нехитрых манипуляций активируют платные функции. А если ты решил монетизировать его с помощью рекламы — ее отключат.
Защитить приложение сложно, но можно. Во-первых, стоит сразу отказаться от модели распространения Pro/Lite. Приложение очень легко вытащить со смартфона, поэтому вору будет достаточно один раз купить приложение, и дальше его можно распространять as is. Во-вторых, необходимо позаботиться о защите кода от реверса. Декомпиляция Java-кода — дело простое, а изменение бинарного кода не требует каких-то особых навыков или инструментов. В-третьих, нужно сделать так, чтобы в случае даже успешного взлома приложение просто не стало работать. Тогда взломщику придется решать сразу две задачи: взломать приложение и заставить взломанную версию работать.
Итак, отказываемся от Pro-версии и начинаем борьбу.
Скрываем и запутываем код
Лучший способ защиты кода приложения от реверса — это обфускация, другими словами — запутывание байт-кода так, чтобы реверсеру было невыносимо трудно в нем разобраться. Существует несколько инструментов, способных это сделать. Наиболее простой, но все же эффективный есть в составе Android Studio. Это ProGuard.
Для его активации достаточно добавить в раздел android → buildTypes → release файла build.gradle строку minifyEnabled true :
После этого Android Studio начнет пропускать все «релизные» сборки через ProGuard. В результате приложение станет компактнее (благодаря удалению неиспользуемого кода), а также получит некоторый уровень защиты от реверса. «Некоторый» в том смысле, что ProGuard заменит имена всех внутренних классов, методов и полей на одно-двухбуквенные сочетания. Это действительно существенно затруднит понимание декомпилированного/дизассемблированного кода.
Так выглядят классы в декомпиляторе JADX после применения ProGuard
Следующий шаг — шифрование строк. Это особенно полезно в том случае, если внутри приложения ты хранишь какие-либо сенситивные данные: идентификаторы, ключи, REST API endpoints. Все это поможет взломщику сориентироваться в твоем коде или вычленить из него важную информацию.
Зашифровать строки можно разными способами, например используя инструменты Stringer или DexGuard. Преимущество: полностью автоматизированная модификация уже имеющегося кода с целью внедрения шифрования строк. Недостаток: цена, которая доступна компаниям, но слишком высока для независимого разработчика.
Поэтому мы попробуем обойтись своими силами. В простейшем случае шифрование строк средствами Java выполняется так:
А расшифровка — так:
Для генерации ключа достаточно одной строки:
Смысл в том, чтобы написать простенькое настольное/мобильное приложение на Java, которое возьмет на вход все твои строки и выдаст на выходе их зашифрованные варианты. Далее ты вставляешь эти строки в основное приложение вместо оригинальных и в местах, где происходит к ним обращение, вызываешь функцию decryptString() .
В результате взломщик просто не сможет увидеть зашифрованные строки, декомпилировав приложение. Но, конечно же, сможет написать простейший дешифратор, основанный на декомпилированном коде твоего шифратора. Другими словами, это не панацея, но еще один уровень сложности шифрование строк добавит.
Можно пойти еще дальше и воспользоваться одним из инструментов комплексной защиты Android-приложений, например AppSolid. Стоит оно опять же дорого, но позволяет зашифровать все приложение целиком. Это действительно способно отпугнуть многих реверсеров, однако есть ряд инструментов, в том числе платный Java-декомпилятор JEB, который умеет снимать такую защиту в автоматическом режиме.
Также ты можешь попытаться разбить свое приложение на множество небольших модулей, как я уже писал в статье Пишем модульные приложения для Android. Сам по себе это не метод защиты, и он почти не затруднит работу реверсера. Но зато обломает различные автоматизированные системы кракинга приложений. Они просто не смогут понять, где искать находящийся в модуле код.
Ну и последнее: из кода необходимо обязательно удалить (закомментировать) все обращения к логгеру, то есть все вызовы Log.d() , Log.v() и так далее. Иначе взломщик сможет использовать эту информацию, чтобы понять логику работы приложения.
Крашим взломанное приложение
Окей, жизнь реверсеру мы немного подпортили. Настало время сделать это еще раз! Но как узнать, было ли приложение взломано? Точнее, как оно само может это выяснить? Ведь понятия «взломанное» и «не взломанное» существуют только в наших с тобой головах, то есть это понятия достаточно высокого порядка, которые не описать алгоритмически.
Так оно, да не так. Дело в том, что внутри APK-файла есть набор метаданных, которые хранят контрольные суммы абсолютно всех файлов пакета, а сами метаданные подписаны ключом разработчика. Если изменить приложение и вновь его запаковать, метаданные пакета изменятся и пакет придется подписывать заново. А так как твоего ключа разработчика у реверсера нет и быть не может, он использует либо случайно сгенерированный, либо так называемый тестовый ключ.
Сам Android такое приложение спокойно проглотит (он не держит базу всех цифровых подписей всех возможных Android-разработчиков), но у нас-то есть своя цифровая подпись, и мы можем ее сверить!
Сверяем цифровую подпись
Собственно, метод довольно простой. Тебе необходимо вставить в приложение код, который будет получать хеш ключа текущей цифровой подписи пакета и сравнивать его с ранее сохраненным. Совпадают — приложение не было перепаковано (и взломано), нет — бьем тревогу.
Для начала вставь следующий кусок кода в приложение (чем глубже ты его запрячешь, тем лучше):
Он как раз и будет сверять сохраненный хеш с хешем ключа, которым в данный момент подписано приложение. Функция возвращает true, если цифровая подпись твоя (приложение не было пересобрано), и false — если оно подверглось модификации. Что делать во втором случае — решать тебе. Ты можешь просто завершить приложение с помощью os.exit(0) либо «уронить» его, например вызвав метод неинициализированного объекта или обратившись к несуществующему значению массива.
Но запомни: взломщик может просто вырезать твой код сверки цифровой подписи и он никогда не сработает (это справедливо и в отношении кода, приведенного далее). Поэтому спрячь его в неочевидном месте, а хеш оригинального ключа зашифруй, как было показано выше.
Искомый хеш ключа
Проверяем источник установки
Еще один метод защиты — выяснить, откуда было установлено приложение. Тут логика простая: если источник установки — Play Store, то все нормально, это оригинальное неперепакованное приложение. Если нет — варез, скачанный с форума и установленный с карты памяти или из «черного маркета».
Выяснить, откуда было установлено приложение, можно в одну строку, а сама функция, делающая это, может выглядеть так:
Как обычно: true — все нормально, false — Хьюстон, у нас проблемы.
Определяем эмулятор
Некоторые методы реверса приложений предполагают использование эмулятора. Поэтому нелишним будет внести в приложение код, проверяющий, не запущено ли оно в виртуальной среде. Сделать это можно, прочитав значение некоторых системных переменных. Например, стандартный эмулятор Android Studio устанавливает такие переменные и значения:
Поэтому, прочитав значения этих переменных, можно предположить, что код исполняется в эмуляторе:
Обрати внимание, что класс android.os.SystemProperties скрытый и недоступен в SDK, поэтому для обращения к нему мы используем рефлексию (о скрытых API Android я уже писал).
Также имей в виду, что существует огромное количество других эмуляторов Android и в них значения переменных могут отличаться. Данный код способен обнаружить только стандартный эмулятор Android.
Отладка
Еще один метод реверса — это запуск приложения под управлением отладчика. Взломщик может декомпилировать твое приложение, затем создать в Android Studio одноименный проект, закинуть в него полученные исходники и просто запустить отладку, не компилируя проект. В этом случае приложение само покажет ему свою логику работы.
Чтобы защититься от отладки, можно использовать следующий код:
Так делать не стоит: код проверок необходимо раскидать по коду и продублировать
Выводы
Создать на 100% защищенное приложение у тебя не получится, можешь даже не пытаться. Но есть достаточно простые способы существенно усложнить жизнь среднестатистическому реверсеру. Да, приложение все равно рано или поздно взломают, но так у тебя хотя бы будет время, чтобы заработать на нем. Ну и стоит почаще обновлять свое творение, чтобы реверсерам жизнь медом не казалась.
Евгений Зобнин
Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.
Современные технологии защиты ПО от нелегального копирования: что выбрать разработчику?
ведущий менеджер по релизам проекта
"Электронные ключи Guardant" компании "Актив"
Согласно исследованиям IDC, уровень пиратства в России в 2009 г. составил 67%. Несмотря на то что эта цифра каждый год снижается, для производителей коммерческого ПО это означает огромную недополученную прибыль.
Многие крупные производители софта предпочитают бороться с пиратством организационными и юридическими мерами. Компания Adobe не так давно отрапортовала, что скорость закрытия нелегальных раздач ее ПО на "торрент-трекерах" составила рекордные 26 секунд. А скандально известное "дело Поносова" о нелегальной установке в заурядной сельской школе ПО от Microsoft – лишь одно из множества дел о нарушении авторских прав, рассматривавшихся в российских судах за последнее десятилетие. Однако мониторинг торрент-трекеров и показательные судебные процессы – лишь часть большого комплекса мер по защите интеллектуальной собственности.
В большинстве случаев наиболее надежными и эффективными остаются технические способы защиты, но для успешного противостояния всем угрозам разработчики коммерческого ПО должны озаботиться вопросами информационной безопасности еще на старте разработки нового продукта. А вопросов здесь по большому счету два: как защитить свои ноу-хау и как противостоять нелегальному копированию?
Защита от копирования
Методы защиты софта от нелегального копирования развивались и эволюционировали последние 30 лет. В эпоху, когда не было Интернета, сканеры и ксероксы являлись экзотической редкостью, а операционные системы были однозадачными, производители компьютерных игрушек привязывали свой софт к поставляемому с ним печатному мануалу. В какие-то моменты использования программы требовалось найти что-то в руководстве пользователя.
Преимуществ у онлайн-защиты множество. Например, отсутствие физических носителей, что означает как отсутствие проблем с пересылкой электронных ключей и дисков, так и невозможность их механических поломок. Также можно отметить относительную дешевизну внедрения и поддержки этого метода защиты и, конечно, возможность широкой цифровой дистрибуции и "мгновенной" покупки ПО из любой точки Земли.Когда этот метод потерял актуальность, стали использоваться более продвинутые технические методы (например, ключевые дискеты). Использовались искусственно созданные сбойные секторы дискет, нестандартное форматирование и "плавающие" биты. И хотя некоторые производители (например, российская компания Abbyy) использовали этот метод защиты вплоть до недавнего времени, на смену им пришли новые технологии.
Недорогой софт, выпускаемый в промышленных масштабах (особенно компьютерные игры), проще всего защищать, привязывая к носителю (CD- или DVD-дискам). Там используются, по сути, те же методы, которыми раньше защищали дискеты: нестандартное форматирование, сбойные секторы на диске, специально закодированный таким образом ключ. В качестве дополнительной меры защиты в системе может устанавливаться специальный защищенный драйвер, призванный бороться с различными эмуляторами. Этот метод защиты сравнительно дешев и подходит для широко тиражируемых продуктов. К ограничениям можно отнести не самую высокую степень защиты и неудобство, вызванное привязкой к физическому носителю. Самые известные системы защиты по такой технологии: SecuROM, StarForce, SafeDisk, Tages.
Электронные ключи
Для защиты более дорогого программного обеспечения применяются электронные ключи или интернет-активация с привязкой к оборудованию. Электронные ключи выигрывают здесь с точки зрения защищенности: в отличие от ключевой дискеты или привязки к CD, электронный ключ в домашних условиях невозможно скопировать, а изучить "внутренности" довольно затруднительно без специального оборудования. Кроме того, современные микропроцессоры в электронных ключах позволяют шифровать трафик между ключом и защищенным приложением криптографическим алгоритмом на одноразовых сессионных ключах, что уничтожает возможность применения целого класса эмуляторов. При использовании этого метода защиты надо понимать, что благодаря технологиям современных ключей можно построить очень эффективную и взломостойкую защиту, но для этого нужно проектировать защиту вместе с проектированием архитектуры самого приложения.
Отдельной строкой идут электронные ключи с возможностью загрузки внутрь произвольного пользовательского кода. Если при разработке приложения хотя бы часть уникальных алгоритмов приложения перенести в такой ключ, а оставшуюся "снаружи" часть приложения заставить постоянно общаться с ключом с помощью асимметричной криптографии (например, в ключ периодически посылаются произвольные данные для выполнения электронно-цифровой подписи), то можно выстраивать защиту с гарантированной взломостойкостью.
Интернет-активация
Неудобство распространения физических носителей и электронных ключей, а также развитие Интернета и цифровой дистрибуции привели к взрывному росту популярности различных методов онлайн-защиты.
Уровень пиратства в России в 2009 г. составил 67%. Несмотря на то что эта цифра каждый год снижается, для производителей коммерческого ПО это означает огромную недополученную прибыльКомпания Microsoft с 1999 г. начала применять интернет-активацию в большинстве своих продуктов, и вот уже более 10 лет сотни миллионов копий (а может, и миллиарды) ее программного обеспечения успешно защищаются таким образом. Суть защиты состоит в том, что приложение вычисляет параметры оборудования, на которое оно установлено (серийные номера материнской платы, процессора и т.д.), в зашифрованном виде пересылает их на сервер активации и после получения ключа приложение начинает работать в полную силу, но оказывается привязанным к "железу", куда оно установлено.
Преимуществ у онлайн-за-щиты множество. Например, отсутствие физических носителей, что означает как отсутствие проблем с пересылкой электронных ключей и дисков, так и невозможность их механических поломок. Также можно отметить относительную дешевизну внедрения и поддержки этого метода защиты и, конечно, возможность широкой цифровой дистрибуции и "мгновенной" покупки ПО из любой точки Земли.
Однако стойкость всех вышеперечисленных методов защиты упирается в сложность реверсинга приложения и его технологий привязки к диску, электронному ключу или он-лайн-активации. Поэтому крайне необходимо защитить приложение не только от копирования, но и от изучения и отладки.
Обфускация кода
Псевдокод и полиморфные технологии
Любая обфускация на уровне машинного кода уменьшает скорость выполнения программы. Ведь в лучшем случае для запутывания кода приходится добавлять туда ненужные инструкции (не влияющие, впрочем, на результат). А для более продвинутой защиты используется технология так называемого псевдокода. Там для обычного x86-процессора разрабатывается некий псевдоязык, оперирующий совершенно другими командами и логическими конструкциями, после чего исходный код защищенного приложения инструкция за инструкцией преобразуется в псевдокод. Для выполнения этого псевдокода генерируется "виртуальная машина", которая на лету преобразовывает команды псевдокода в машинные инструкции и исполняет их. Результат остается тот же, но код приложения меняется до неузнаваемости, и "отреверсить" искомые алгоритмы защищенного приложения можно лишь после вскрытия всей логики псевдокода.
Для повышения стойкости псевдокода могут использоваться полиформные технологии. Это означает, что псевдокод каждый раз новый и виртуальная машина для его исполнения тоже генерируется моментально на лету.
Эти технологии сами по себе не защищают приложение от нелегального копирования, но позволяют надежно скрыть алгоритмы и ноу-хау разработчика, а также прочие важные места программы (вроде того, где осуществляется обмен с электронным ключом или процедура проведения и проверки онлайн-активации).
Перспективы
За последние 30 лет появлялись и погибали различные технологии. И сейчас многим кажется, что с развитием Интернета и цифровой дистрибуции право на существование имеет только онлайн-активация для защиты от копирования и обфускация кода для защиты от реверсинга. Однако есть и противоположная тенденция – развитие рынка SaaS и переход приложений в "облако". Если считать эту тенденцию потенциальным победителем, то защита вообще никому не нужна, ведь приложение не распространяется. Для "облаков" важна аутентификация, безопасность передачи данных и доступность сети.
Выбирая защиту для своего программного продукта, необходимо учитывать множество факторов: каналы дистрибуции (физические или цифровые), стоимость защиты, требования к надежности и отказоустойчивости. В некоторых случаях приложению вполне допустимо "уйти в облако", где защита осуществляется организационными мерами, но уже не обойтись без надежной аутентификации. Если же софт распространяется вместе с оборудованием (например, кассовые аппараты, терминалы и т.д.), то электронный ключ – это лучший и практически единственный вариант защиты. Электронные ключи (особенно с загружаемым кодом) незаменимы при защите особо ценного ПО с уникальными ноу-хау. Если приложение стоит десятки тысяч долларов, то экономить на защите не стоит, да и проблема физического распространения не столь актуальна – такое ПО зачастую внедряется армией консультантов и всегда есть "физический" контакт с клиентом.
В остальных же случаях для тиражного и недорогого софта технология онлайн-активации – это наиболее современное, надежное и относительно недорогое средство защиты. Исключением является ситуация, когда продажи осуществляются через партнерскую сеть. Софтверные лицензии не так хорошо защищают от мошенничества со стороны партнеров, электронные ключи же решают эту проблему полностью. Нельзя одну и ту же "железку" дать двум разным клиентам.
Читайте также:
- Метро москвы приложение для андроид скачать бесплатно на русском языке без регистрации
- Публикация в других приложениях в инстаграм не добавляется вк
- Как заказать яндекс такси на определенное время через приложение
- На каком окружении приложение доступно пользователю
- Jsr l402mini подключение к интернету какое приложение подходит для просмотра в телефоне