Найти в Дзене
SoftSAR

Защита Python программ

Низкий порог входа, простота использования, высокая скорость разработки и огромная база библиотек сделали Python популярным языком программирования. Разработав программу и перейдя к стадии ее распространения многие задаются вопросом защиты ПО. Обфускация один из методов защиты приложений. Защиту данных паролями и привязкой к железу легко обойти, проанализировав код программы. Чтобы код нельзя было так просто просмотреть и понять его необходимо запутать усложнить для восприятия и анализа. Для этого и была разработана обфускация, набор методов, превращающих понятный код в непонятный набор символов. Причин для обфускации может быть несколько: Обфускация соответствует принципу экономической целесообразности, ее использование экономически выгодно для небольших проектов, стоимость программного продукта повышается незначительно, и позволяет при этом уменьшить риски несанкционированного доступа к программному коду, а также когда другие методы являются неэффективными или нецелесообразными

Низкий порог входа, простота использования, высокая скорость разработки и огромная база библиотек сделали Python популярным языком программирования. Разработав программу и перейдя к стадии ее распространения многие задаются вопросом защиты ПО.

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

Причин для обфускации может быть несколько:

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

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

Виды обфускации

  • лексическая обфускация;
  • преобразование данных;
  • преобразование управления;
  • профилактическая обфускация;
  • обфускация адресов;
  • регулярное обновление кода.

Лексическая обфускация замена названий переменных и функций.

Преобразование данных более сложная и эффективная операция. Она включает в себя изменение и создание новых типов данных и применение к ним комбинаторики. 

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

Профилактическая обфускация защищает ваш код от деобфускации специальными программами-деобфускаторами.

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

Регулярное обновление кода метод предотвращает атаки, регулярно выпуская обновления обфусцированного программного обеспечения. Делают усилия по взлому кода в таком случае экономически нецелесообразными.

При обфускации кода, важно правильно оценить, какие части когда можно эффективно запутать. Следует избегать обфускации кода, критичного относительно производительности.

У обфускации есть два больших недостатка:

  • Программа работает медленнее.
  • Обфусцированный код почти невозможно править без доступа к исходному коду.

Python предоставляет библиотеки для обфускации и защиты программного кода. Наиболее популярной и востребованной библиотекой является PyArmor.

PyArmor это инструмент, используемый для обфускации скриптов Python, привязки скриптов на к конкретному ПК, а также установлении срока действия скриптов.

Устанавливаем библиотеку через командную строку:

pip install pyarmor

В предыдущей статье, мы создали игру змейка.

Командой obfuscate проведем обфускацию кода игры.

Запустим командную строку. Перейдем в папку с проектом и выполним команду:

pyarmor obfuscate snake_game.py

В результате получаем папку dist с файлами snake_game.py и файл dll.

Модуль pyarmor позволяет устанавливать ограничения по сроку действия программы файлы лицензии. Для этого выполните следующую команду:

pyarmor licenses --expired 2022-12-31 r001
pyarmor obfuscate --with-license licenses/r001/license.lic snake_game.py

Библиотека имеет множество других полезных функций, ознакомится с которыми можно в документации.

В данной статье, мы рассмотрели методы защиты программного кода, изучили библиотеку pyarmor, а также рассмотрели методы библиотеки.

С уважением, Карян Армен.
Занимаюсь профессиональной разработкой прикладных программ на Python.
email SoftSAR@yandex.ru
Telegram @SoftSar_am