Декомпиляция файлов Python с помощью PyInstaller Extractor

Декомпиляция файлов Python с помощью PyInstaller Extractor

PyInstaller — это популярный инструмент для упаковки Python-приложений в автономные исполняемые файлы. Он упрощает распространение программ на Python. Несмотря на полезность PyInstaller, он позволяет декомпилировать файл и является небезопасным с точки зрения защиты кода. Далее поговорим о декомпиляции файлов PyInstaller с помощью PyInstaller Extractor.

Еще по теме: Декомпиляция APK-файлов онлайн

Инструменты для декомпиляции файлов PyInstaller

Существует несколько инструментов для декомпиляции и получения исходного кода Python. Один из популярных — PyInstaller Extractor.

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

Его можно скачать с  Sourceforge.

pyinstaller-extractor

При распаковке исполняемого файла получается набор файлов .pyc. Эти файлы содержат скомпилированный байт-код, созданный интерпретатором Python при выполнении или импорте Python-скрипта.

На июнь 2023 год довольно просто декомпилировать и получить исходный код Python, если файлы .pyc были созданы с использованием версий Python до 3.9. Есть несколько библиотек, которые можно использовать для этой цели:

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

decompyle3

Тем не менее, стоит отметить, что последняя версия Python на момент написания статьи — это 3.11+, и декомпиляция файлов .pyc для версий выше 3.8 является более сложной задачей.
Реализация методов декомпиляции байт-кода для последних версий Python — это трудоемкий процесс и занимает много времени.

Несмотря на это ограничение, я нашел инструмент под названием pycdc, который может частично декомпилировать код из последних версий Python. Следует отметить, что этот инструмент не всегда успешен, но может предоставить некоторые фрагменты кода для анализа.

В качестве демонстрации давайте создадим пример с закодированными учетными данными, чтобы показать процесс декомпиляции.

Декомпиляция файлов Python

Итак, у нас есть файл PoC.py и мы переходим к его упаковке в исполняемый файл (.exe) с помощью PyInstaller. Этот шаг создает автономный исполняемый файл, который инкапсулирует код Python и его зависимости.

Упаковка Python PyInstaller 

Теперь предположим, что сгенерированный файл .exe попадает в руки злоумышленника. С точки зрения злоумышленника, первый шаг — извлечь скомпилированный байт-код (.pyc) из исполняемого файла:

Извлечение скомпилированный байт-код .pyc

Затем злоумышленник может использовать pycdc.exe (Decompile++) для декомпиляции байт-кода в читаемый исходный код Python.

Этот процесс возможен даже если версия Python, используемая для компиляции, выше 3.8, благодаря возможностям pycdc.

Декомпиляция Python PyInstaller Extractor

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

Заключение

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

Автор идеи Сергей Новоселов.

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

QUASAR

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

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