Blog. Just Blog

Программы для декомпиляции скриптов Python

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Программы для декомпиляции скриптов Python
Программы для декомпиляции скриптов Python

Python - это один из наиболее популярных современных языков программирования. Его поддерживают в качестве скриптового языка различные программы, на нем написано огромное количество различных модулей, плагинов и тому подобное. Исходные тексты на Python можно компилировать в файлы с расширением .pyc, после компиляции они превращаются в нечитаемые бинарные данные. Это далеко не текстовый файл, поэтому, чтобы внести изменения или изучить алгоритм работы такого скрипта, потребуется привести его к исходному виду, то есть декомпилировать. Как ни странно, при всей популярности языка Python, инструментов для реверсинга .pyc-файлов создано не так уж и много.

Все декомпиляторы для Python, которые я встречал, написаны на нем же самом. С одной стороны, это облегчает понимание их работы, дает возможность доработки. Но с другой стороны, ничего не будет работать "из коробки", для запуска потребуется немало напрячься. Все перечисленные в статье инструменты представляют собой оболочки для автоматизации работы с готовыми декомпиляторами.

Скриншот программы Easy Python Decompiler
Скриншот программы 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 можно с офсайта или по ссылке ниже.

Easy Python Decompiler 1.3.2Easy Python Decompiler 1.3.2

Easy.Python.Decompiler.1.3.2.zip (7,952,829 bytes)

Скриншот программы PjOrion
Скриншот программы PjOrion

PjOrion - отечественная разработка, универсальный инструмент для декомпиляции и дизассемблирования Python-скриптов. Изначально создавался для работы с какими-то модами WoT, но вполне может быть использован и для наших целей. Также не требует установленного Python, но при необходимости может легко подключить любую версию Python, установленную на компьютере. Кроме уже упомянутых Uncompyle2 и Decompyle++, для декомпиляции использует еще два инструмента - Fupy и pyREtic. Оба они поддерживают компилятор Python только до версии 2.7 включительно, но хуже того, что они глючные. Повторюсь, что Uncompyle2 по качеству результата еще никто не превзошел. Рабочих декомпиляторов для Python 3.x все также нет. В PjOrion есть полезная функция определения версии компилятора, так что не ошибетесь, какой модуль Python выбрать. Но главная прелесть, ради которой стоит держать PjOrion в коллекции реверсера, - это дизассемблер Python-скриптов. И пока что это единственный инструмент, который можно применить для анализа компилированных скриптов версий 3.x. Конечно, специфическому дизассемблерному листингу очень далеко до красивого декомилированного исходника, но при наличии некоторого опыта можно хотя бы понять логику работы скрипта. Скачать PjOrion можно с офсайта или отсюда.

Скриншот программы Py2Exe Binary Editor
Скриншот программы Py2Exe Binary Editor

Py2Exe Binary Editor не совсем относится к декомпиляторам, но используется как вспомогательная утилита для извлечения всех компонентов из исполняемых файлов, созданных при помощи py2exe. С помощью Py2Exe Binary Editor можно легко извлечь Python-скрипт для дальнейшего анализа. Как и сам py2exe, редактор работает только со 2-й версией Python.

Py2Exe Binary Editor 0.1Py2Exe Binary Editor 0.1

Py2Exe.Binary.Editor.0.1.zip (833,830 bytes)

На этом заканчивается и без того скромный список декомпиляторов для Python. Если у вас есть что-нибудь для этих же задач, то большая просьба поделиться. Особенно интересуют рабочие декомпиляторы для Python 3.x.

Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 13274 | Комментариев: 6

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
ManHunter (21.07.2016 в 00:45):
Статью совсем не читал, да? Он входит в комплект Easy Python Decompiler
К тому же как не брал он Python 3, так и не берет.
Андрей Р (CroCoder) (21.07.2016 в 00:40):
Есть еще опен-сорсный декомилятор Decompyle++ https://github.com/zrax/pycdc/

Я потратил время на то чтобы разобраться с его компиляцией и выложил его на свой сайт: [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/
SendMessage (21.05.2015 в 12:28):
А вот это очень круто! Спасибо! Будем знать, если кто-то еще выныривает сюда из своего ассемблера, один раз попав в его безграничные возможности :)

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

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2017
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.08 сек. / MySQL: 2 (0.0047 сек.) / Память: 4.5 Mb
Наверх