Как правильно декомпилировать exe файл (python)?
Я распаковал exe файл с помощью PyInstaller Extractor, однако среди .pyc файлов нет основного файла программы.
Вот то, что декомпилировалось:
[+] Beginning extraction. please standby [+] Possible entry point: pyiboot01_bootstrap.pyc [+] Possible entry point: pyi_rth_pkgutil.pyc [+] Possible entry point: pyi_rth_inspect.pyc [+] Possible entry point: pyi_rth_subprocess.pyc [+] Possible entry point: pyi_rth_multiprocessing.pyc [+] Possible entry point: app_async.pyc
Однако файла «НазваниеПрограммы.pyc» не появилось(
- Вопрос задан 30 окт. 2023
- 85 просмотров
1 комментарий
Простой 1 комментарий
Как декомпилировать exe файл скрипта на Python?

Всем доброго!
Есть файл exe предполагаю, что это скомпилированый python.
Вот такая иконка:
Как правильно его можна декомпилировать?
- Вопрос задан более трёх лет назад
- 15660 просмотров
Комментировать
Решения вопроса 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 в .py?
В общем, я писал небольшой скрипт для на python. Заказчик потребовал, чтобы был готовый exe, поэтому пришлось использовать Pyinstaller (с py2exe у меня выдавало ошибку). Проект выполнен и я решил переустановить винду. Но потом заказчик попросил переписать скрипт. Исходники я конечно же не забэкапил т.к. думал что к этому проекту уже не вернусь. В итоге, что у меня есть: exe скомпилированный с помощью pyinstaller и исходники старой версии проекта, которые остались на флешке. Подскажите, можно ли их как-нибудь декомпилировать в .py или мб какое-нибудь другое решение (писать заново — не вариант).
Отслеживать
1,825 1 1 золотой знак 16 16 серебряных знаков 31 31 бронзовый знак
задан 4 сен 2018 в 11:47
31 1 1 золотой знак 1 1 серебряный знак 2 2 бронзовых знака