Программы для декомпиляции скриптов Python
Программы для декомпиляции скриптов Python
Python - это один из наиболее популярных современных языков программирования. Его поддерживают в качестве скриптового языка различные программы, на нем написано огромное количество различных модулей, плагинов и тому подобное. Исходные тексты на Python можно компилировать в файлы с расширением .pyc, после компиляции они превращаются в нечитаемые бинарные данные. Это далеко не текстовый файл, поэтому, чтобы внести изменения или изучить алгоритм работы такого скрипта, потребуется привести его к исходному виду, то есть декомпилировать. Как ни странно, при всей популярности языка Python, инструментов для реверсинга .pyc-файлов создано не так уж и много.
Все декомпиляторы для Python, которые я встречал, написаны на нем же самом. С одной стороны, это облегчает понимание их работы, дает возможность доработки. Но с другой стороны, ничего не будет работать "из коробки", для запуска потребуется немало напрячься. Все перечисленные в статье инструменты представляют собой оболочки для автоматизации работы с готовыми декомпиляторами.
Скриншот программы Easy Python Decompiler
Easy Python Decompiler - оболочка для декомпиляторов Uncompyle2 и Decompyle++. Не требует установленного Python, может декомпилировать как отдельные скрипты, так и целые папки. С помощью Uncompyle2 прекрасно справляется с .pyc-файлами, скомпилированными версиями Pytyhon 1.0-2.7. Тут никаких вопросов нет, Uncompyle2 - самый лучший инструмент для этого, но, к сожалению, его разработка прекращена. Decompyle++ по заверениям авторов, должен поддерживать компиляторы Python аж до самой новой 3.4, но на деле все не так радужно. Простенькие скрипты уровня "Hello World!" версий Python 3.x он отрабатывает еще нормально, более серьезные скрипты гарантированно вызовут падение декомпилятора. Скачать Easy Python Decompiler можно с офсайта или по ссылке ниже.
Скриншот программы PjOrion
PjOrion - отечественная разработка, универсальный инструмент для декомпиляции и дизассемблирования Python-скриптов. Изначально создавался для работы с какими-то модами WoT, но вполне может быть использован и для наших целей. Также не требует установленного Python, но при необходимости может легко подключить любую версию Python, установленную на компьютере. Кроме уже упомянутых Uncompyle2 и Decompyle++, для декомпиляции использует еще два инструмента - Fupy и pyREtic. Оба они поддерживают компилятор Python только до версии 2.7 включительно, но хуже того, что они глючные. Повторюсь, что Uncompyle2 по качеству результата еще никто не превзошел. Рабочих декомпиляторов для Python 3.x все также нет. В PjOrion есть полезная функция определения версии компилятора, так что не ошибетесь, какой модуль Python выбрать. Но главная прелесть, ради которой стоит держать PjOrion в коллекции реверсера, - это дизассемблер Python-скриптов. И пока что это единственный инструмент, который можно применить для анализа компилированных скриптов версий 3.x. Конечно, специфическому дизассемблерному листингу очень далеко до красивого декомилированного исходника, но при наличии некоторого опыта можно хотя бы понять логику работы скрипта. Скачать PjOrion можно с офсайта или отсюда.
Ren'Py
Unrpyc - декомпилятор для скриптов, созданных в игровом движке Ren'Py. Они хоть и пишутся на Python, но имеют свой внутренний формат и после компиляции не поддаются анализу обычными средствами. Декомпилятор работает из командной строки и требует наличие установленного Python.
Скриншот программы Py2Exe Binary Editor
Py2Exe Binary Editor не совсем относится к декомпиляторам, но используется как вспомогательная утилита для извлечения всех компонентов из исполняемых файлов, созданных при помощи py2exe. С помощью Py2Exe Binary Editor можно легко извлечь Python-скрипт для дальнейшего анализа. Как и сам py2exe, редактор работает только со 2-й версией Python.
На этом заканчивается и без того скромный список декомпиляторов для Python. Если у вас есть что-нибудь для этих же задач, то большая просьба поделиться. Особенно интересуют рабочие декомпиляторы для Python 3.x.
Просмотров: 37660 | Комментариев: 9
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Temnij
(14.04.2021 в 17:46):
Мм, на винде очень просто ставится через python3 -m pip install uncompyle6
ManHunter
(10.01.2020 в 11:27):
Несомненно. Вот еще бы нормальную инструкцию по его установке на CentOS, а лучше на винду.
Иван
(09.01.2020 в 23:10):
сейчас uncompyle6 лучше всех
ManHunter
(21.07.2016 в 00:45):
Статью совсем не читал, да? Он входит в комплект Easy Python Decompiler
К тому же как не брал он Python 3, так и не берет.
К тому же как не брал он Python 3, так и не берет.
Андрей Р (CroCoder)
(21.07.2016 в 00:40):
Есть еще опен-сорсный декомилятор Decompyle++ https://github.com/zrax/pycdc/
Я потратил время на то чтобы разобраться с его компиляцией и выложил его на свой сайт: [del]
Пользуйтесь.
Я потратил время на то чтобы разобраться с его компиляцией и выложил его на свой сайт: [del]
Пользуйтесь.
ManHunter
(08.12.2015 в 22:50):
Да, поправил. Спасибо.
Sergey
(08.12.2015 в 22:36):
Жмакнул ссылку на PjOrion - не открывается, висит сайт в загрузке все. Скачал с Ядиска. И только потом заметил, что после http нет двоеточия =)
vlad-x
(21.05.2015 в 22:27):
free онлайн ресурс http://depython.com/
заявлена поддержка только версий 2.0-2.6
и модуль на 3.2 версию
https://code.google.com/p/unpyc3/
заявлена поддержка только версий 2.0-2.6
и модуль на 3.2 версию
https://code.google.com/p/unpyc3/
SendMessage
(21.05.2015 в 12:28):
А вот это очень круто! Спасибо! Будем знать, если кто-то еще выныривает сюда из своего ассемблера, один раз попав в его безграничные возможности :)
Добавить комментарий
Заполните форму для добавления комментария