Обфускация Python с помощью Cython

Bash Kali Linux

Кроме описанных в статье «Библиотеки для обфускации Python» инструментов, я нашел еще один способ обфускации Python с использованием Cython, который оказался очень полезным и сложным в плане реверс-инжиниринга. Давайте рассмотрим использование Cython.

Еще по теме: Обфускация Python используя Pyarmor

Обфускация Python с помощью Cython

Обфускация — это одна из многих функций пакета Cython — это оптимизирующий статический компилятор, который берет файлы .py и переводит их в файлы на языке C. Полученные файлы C, без каких-либо усилий, могут быть скомпилированы в бинарные библиотеки. После компиляции, нет способа преобразовать скомпилированные библиотеки обратно в читаемый исходный код Python.

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

Вы можете ознакомиться с кодом проекта по этой ссылке:

Структура репозитория выглядит следующим образом:

  • main.py — служит для запуска приложения Flask.
  • routes.py — здесь находятся все маршруты API, предоставляемые приложением.
  • swagger.yml — содержит детали API, доступные в виде отформатированной документации через браузер.
  • src/solver.py — в этом файле находится бизнес-логика проверки уравнения и его разрешения, если оно действительно.
  • compile.py — содержит код для создания файлов .so из файлов .py.

Для запуска приложения Flask выполните следующую команду в терминале:

Теперь можно получить доступ к документации API Swagger по следующему адресу:

Обфускация Python с помощью Cython

Использование Cython для обфускация Python

Использование Cython Python обфускация

Для компиляции кода выполните следующую команду, в зависимости от версии Python:

Для Python:

Для Python 3:

Команда создаст файлы .so и .c рядом с исходными файлами .py:

Файлы .c — это промежуточные исходники, используемые для создания файлов .so. Вы можете удалить файлы .pyc, .c и .py после успешной компиляции и оставить только файлы .so.

Обратите внимание, что файлы .so содержат имя целевой платформы в своих именах (например, darwin на MacOS). Очевидно, что скомпилированные библиотеки не кросс-платформенны. Если вы распространяете свою программу пользователям Ubuntu Linux, вы должны компилировать ее на Linux. В противном случае вы не сможете загрузить эти бинарные файлы. Таким образом, вам придется скомпилировать платформо-специфическую версию вашего кода для каждой из целевых платформ.

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

ПОЛЕЗНЫЕ ССЫЛКИ:

QUASAR

Этичный хакер: компьютерный ниндзя и мастер цифровых тайн.

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