Как декомпилировать .exe в .py?
В общем, я писал небольшой скрипт для на python. Заказчик потребовал, чтобы был готовый exe, поэтому пришлось использовать Pyinstaller (с py2exe у меня выдавало ошибку). Проект выполнен и я решил переустановить винду. Но потом заказчик попросил переписать скрипт. Исходники я конечно же не забэкапил т.к. думал что к этому проекту уже не вернусь. В итоге, что у меня есть: exe скомпилированный с помощью pyinstaller и исходники старой версии проекта, которые остались на флешке. Подскажите, можно ли их как-нибудь декомпилировать в .py или мб какое-нибудь другое решение (писать заново — не вариант).
Отслеживать
1,815 1 1 золотой знак 16 16 серебряных знаков 31 31 бронзовый знак
задан 4 сен 2018 в 11:47
31 1 1 золотой знак 1 1 серебряный знак 2 2 бронзовых знака
Как декомпилировать exe файл скрипта на Python?

Всем доброго!
Есть файл exe предполагаю, что это скомпилированый python.
Вот такая иконка:
Как правильно его можна декомпилировать?
- Вопрос задан более трёх лет назад
- 15307 просмотров
Комментировать
Решения вопроса 1
Сергей Горностаев @sergey-gornostaev Куратор тега Python
Седой и строгий
- Скачиваешь PyInstaller Extractor
- Устанавливаешь uncompyle6
- Распаковываешь extractor’ом exe’шник
- Декомпилируешь интересующие pyc-файлы с помощью uncompyle6
Ответ написан более трёх лет назад
Комментировать
Нравится 21 Комментировать
Декомпиляция файлов Python с помощью PyInstaller Extractor
PyInstaller — это популярный инструмент для упаковки Python-приложений в автономные исполняемые файлы. Он упрощает распространение программ на Python. Несмотря на полезность PyInstaller, он позволяет декомпилировать файл и является небезопасным с точки зрения защиты кода. Далее поговорим о декомпиляции файлов PyInstaller с помощью PyInstaller Extractor.
Инструменты для декомпиляции файлов PyInstaller
Существует несколько инструментов для декомпиляции и получения исходного кода Python. Один из популярных — PyInstaller Extractor.
PyInstaller Extractor — это инструмент, который позволяет распаковать ресурсы из исполняемых файлов, созданных с помощью PyInstaller. С его помощью вы можете получить доступ к исходному коду, изображениям, конфигурационным файлам и другим ресурсам, включенным в исполняемый файл.
Его можно скачать с Sourceforge.

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

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

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

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

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

В результате злоумышленник получает доступ к легко анализируемому и эксплуатируемому коду, раскрывая закодированные учетные данные или потенциальные уязвимости, присутствующие в исходном коде.
Заключение
Декомпиляция исполняемых файлов PyInstaller имеет большое значение в плане безопасности, так как она раскрывает уязвимости, выявляет закодированные секреты и позволяет анализировать код. Приоритезируя меры безопасности с самого начала, вы можете снизить риски, связанные с декомпиляцией, и улучшить защиту ваших приложений.
Автор идеи Сергей Новоселов.
- Лучшие программы для реверс-инжиниринга
- Обзор фреймворка для реверс-инжиниринга Ghidra
- Библиотеки и другие инструменты для обфускации Python
Как декомпилировать exe python

prolisk Topic Starter
22.2.2018, 15:33; Сообщений: 6107
Поблагодарили: 39 раз
Репутация: 6
![]()

Просмотр профиля
Topic Starter 22.2.2018, 15:33; Ответить: prolisk —> Ответить: prolisk Ответить с цитатой: prolisk —> Ответить: prolisk —>

Группа: Active User
Сообщений: 6107
Регистрация: 24.8.2010
Из: Sava
Поблагодарили: 39 раз
Репутация: 6
Если скрипт собирался через pyinstaller, то декомпилировать .ехе можно через pyinstxtractor18.
В большинстве случаев он справляется отлично.
После декомпиляции предложат распознать файлы .pyc через какой-то декомпилятор (другой).
С файлами .pyc отлично справляется uncompyle6 (даже на винде)
Но вот проблемка.
Есть основной скрипт и он после декомпиляции без расширения. Можно открыть нотепадом++, но он зашифрован и искажен.
Как достать "чистый" код?
Спасибо.