Декомпилятор файлов .pyc в .py
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Архив
Поиск
Текстовый виджет боковой панели
Это текстовый виджет. Текстовый виджет позволяет добавлять текст или HTML на любую боковую панель, которая есть в теме оформления сайта. Используйте текстовый виджет для отображения текста, ссылок, изображений, HTML или их сочетаний. Чтобы изменить элемент, откройте раздел «Виджет» в Конфигураторе.
Блог на WordPress.com. Тема: Nucleare, автор: CrestaProject.
Редактирование файлов .pyc
Приветы!
Столкнулся с зашифрованными файлами .pyc, нужно их редактировать а навыков ноль. Помогите разобраться как к ним подойти, что бы со временем научиться с ними работать.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Компиляция в .pyc
Как исходник из .py файла скомпилировать в .pyc файл? Мой Python 3.2, по какой то причине, сам это.
Компиляция в .pyc
Добрый день! я тоже не большой знаток питонов, но описаный выше способ опробовал файл рус. стал.
py и pyc файлы
Доброго времени суток. Работаю в одном приложении. В нем есть возможность, писать расширения.
Редактирование файла .pyc
Добрый день! Подскажите, как мне отредактировать файл .pyc? Спасибо 🙂 Добавлено через 4 минуты.
3685 / 962 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
Они не зашифрованные, а скомпилированные
Возможно поможет это: https://github.com/wibiti/uncompyle2
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
uncompyle2 только для python 2 подойдет и то не всегда, так что скорее всего переконвертировать файл ты скорее всего не сможешь.
В общем ответ для 90% случаев: с pyc файлами ты ничего сделать не сможешь.
4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,102
Записей в блоге: 6
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Запрет на удаление и редактирование содержимого файлов в каталоге с возможностью создания новых файлов
Всем привет! Облазил весь интернет, сам проковырялся пару дней, но не могу такие права реализовать.
Просмотреть функции в *pyc
У меня есть питоновский файл *pyc. Требуется просмотреть функции или классы данного файла! Как это.
Как декомпилировать .pyc?
Как декомпилировать .pyc? В интернете висит куча инструкций, но на таджикском. Какие-то скрипты.
Не создаётся файл .pyc
На сколько мне извесно, после выполнения файла .py, должен создаваться файл .pyc с байт-кодом, а.
Декомпиляция pyc файла игры worldoftanks
помогите с декомпиляцией pyc файла CompanyAutoEnter.pyc запускаю декомпиляцию — не получается.
Редактирование файлов
Всем привет! Вообщем ребят, прошу вас помочь мне разобраться с данными файлами, а точнее с их.
Редактирование файлов
Здравствуйте) Уж простите, что так с файлами задалбываю, но решил понять эту тему хорошенько).
Я не могу открыть файл PYC. Что я должен делать? Помогите!
Практически каждый сталкивался с некоторыми проблемами при открытии неизвестных файлов при работе на компьютере. Это может быть очень сложно. Однако такие проблемы, не только с файлами PYC, могут быть решены стандартным способом. Следуйте инструкциям ниже, и мы можем гарантировать, что ваша проблема с открытием PYC будет решена!
- 1. PYC расширение файла
- 2. Что такое PYC файл?
- 3. Как открыть файл PYC?
- 3.1 Загрузите и установите приложение, которое поддерживает PYC файлы
- 3.1.1 Программы, поддерживающие PYC файлы
PYC расширение файла
- Тип файла Python Compiled Format
- Разработчик файлов N/A
- Категория файла Исполняемые файлы
- Рейтинг популярности файлов
Что такое PYC файл?
PYC (Python Compiled Format) — это формат скомпилированного байт-кода, используемый языком программирования Python. Он аналогичен формату файла класса Java, содержащему байт-код, который будет интерпретироваться виртуальной машиной Python (PyVM). Файлы PYC обычно имеют расширение «.pyc» и хранятся в том же каталоге, что и исходный код Python. Файлы PYC позволяют запускать программы, написанные на Python, без необходимости каждый раз перекомпилировать код.
Интерпретатор Python может интерпретировать байт-код, хранящийся в файле PYC, быстрее, чем он может интерпретировать код, написанный в форме исходного кода Python. Байт-код создается при первом запуске программы, что позволяет при последующих запусках пропускать этап компиляции и значительно ускорять время выполнения по сравнению с исходным исходным кодом.
Как открыть файл PYC?
Если данная учетная запись пользователя не имеет необходимых разрешений для открытия файлов с расширением PYC , весьма вероятно, что в системе пользователей не установлена программа, поддерживающая данные файлы. Ниже приведен список действий, которые пользователь должен выполнить для решения наиболее распространенных проблем.
Шаг 1. Загрузите и установите приложение, которое поддерживает PYC файлы
После установки приложения система должна автоматически открывать PYC файлы с данным приложением. Ниже приведен список соответствующих программ, а также операционных систем, для которых они доступны:
Как устроены .pyc?
В последнем байткоде потеряна информация о константах, при том, что есть LOAD_CONST (100). Попробуем скомпилировать файл с помощью compileall :
>> python -m compileall ./ Listing './'. Compiling './set.py'.
00 00 00 00 00 00 00 00 00 01 00 00 00 40 00 00 00 73 08 00 00 00 64 00 5A 00 64 01 53 00 29 02 E9 0A 00 00 00 4E 29 01 DA 01 78 A9 00 72 03 00 00 00 72 03 00 00 00 FA 08 2E 2F 73 65 74 2E 70 79 DA 08 3C 6D 6F 64 75 6C 65 3E 01 00 00 00 73 00 00 00 00
Найти в этом коде предыдущий мне не удалось. Как это можно объяснить?
Где вообще можно почитать про то, как устроен .pyc ? Хочу написать свою маленькую ВМ для Python.Отслеживать
задан 13 мар 2018 в 20:40
1,536 1 1 золотой знак 11 11 серебряных знаков 26 26 бронзовых знаков
Как минимум 64 00 5A 00 64 01 53 00 это [100, 0, 90, 0, 100, 1, 83, 0]
13 мар 2018 в 20:45А беглый поиск по документации говорит, что нолик у LOAD_CONST ссылается на первую константу, хранящуюся в co_consts
13 мар 2018 в 20:47
@andreymal да, действительно, плохо искал. Про нолик в LOAD_CONST я знаю, непонятно только, что из файла выше является таблицей констант.
13 мар 2018 в 21:05
связанный вопрос Какова структура файла байткода CPython?
14 мар 2018 в 6:231 ответ 1
Сортировка: Сброс на вариант по умолчанию
pyc-файл состоит из
- Четырёхбайтового магического номера
- Четырёхбайтовой метки времени
- Четырёх байт хранящих размер исходного файла
- Сериализованного объекта кода
Магический номер — это два байта уникальных для каждой версии интерпретатора и два байта 0d0a . Байты 0d0a — это символ возврата каретки и перевода строки, защищающие файл от повреждения в случае редактирования в текстовом режиме.
Метка времени хранит время последнего изменения исходника, по которому сгенерирован pyc-файл.
С размером, уверен, всё очевидно и каких-либо уточнений не требует.
Остальная часть файла — это результат выполнения marshal.dump на объекте кода, который в свою очередь является результатом компиляции исходника.
«Дизассемблировать» pyc-файл можно этим скриптом:
import dis, marshal, struct, sys, time, types from codecs import encode def show_file(fname): with open(fname, 'rb') as fh: magic = fh.read(4) moddate = fh.read(4) filesz = fh.read(4) modtime = time.asctime(time.localtime(struct.unpack('=L', moddate)[0])) filesz = struct.unpack('=L', filesz) print('magic '.format(encode(magic, 'hex').decode())) print('moddate ()'.format(encode(moddate, 'hex').decode(), modtime)) print('file size '.format(*filesz)) code = marshal.load(fh) show_code(code) def show_code(code, indent=''): print('code'.format(indent)) indent += ' ' print('argcount '.format(indent, code.co_argcount)) print('nlocals '.format(indent, code.co_nlocals)) print('stacksize '.format(indent, code.co_stacksize)) print('flags 4x>'.format(indent, code.co_flags)) show_hex('code', code.co_code, indent=indent) dis.disassemble(code) print('consts'.format(indent)) for const in code.co_consts: if type(const) == types.CodeType: show_code(const, indent + ' ') else: print(' '.format(indent, const)) print('names '.format(indent, code.co_names)) print('varnames '.format(indent, code.co_varnames)) print('freevars '.format(indent, code.co_freevars)) print('cellvars '.format(indent, code.co_cellvars)) print('filename '.format(indent, code.co_filename)) print('name '.format(indent, code.co_name)) print('firstlineno '.format(indent, code.co_firstlineno)) show_hex('lnotab', code.co_lnotab, indent=indent) def show_hex(label, h, indent): h = encode(h, 'hex').decode() if len(h) < 60: print(' '.format(indent, label, h)) else: print (''.format(indent, label)) for i in range(0, len(h), 60): print(' '.format(indent, h[i:i+60])) show_file(sys.argv[1])
Запуск его на pyc-файле этого скрипта
a, b = 1, 0 if a or b: print('Hello', a)
даст такой вывод
magic 330d0d0a moddate 1094a85a (Wed Mar 14 11:16:32 2018) files sz 48 code argcount 0 nlocals 0 stacksize 3 flags 0040 code 64045c025a005a01650073106501721a6502640265008302010064035300 1 0 LOAD_CONST 4 ((1, 0)) 2 UNPACK_SEQUENCE 2 4 STORE_NAME 0 (a) 6 STORE_NAME 1 (b) 2 8 LOAD_NAME 0 (a) 10 POP_JUMP_IF_TRUE 16 12 LOAD_NAME 1 (b) 14 POP_JUMP_IF_FALSE 26 3 >> 16 LOAD_NAME 2 (print) 18 LOAD_CONST 2 ('Hello') 20 LOAD_NAME 0 (a) 22 CALL_FUNCTION 2 24 POP_TOP >> 26 LOAD_CONST 3 (None) 28 RETURN_VALUE consts 1 0 'Hello' None (1, 0) names ('a', 'b', 'print') varnames () freevars () cellvars () filename 'D:\\playground\\python\\test.py' name '' firstlineno 1 lnotab 08010801
Ответ написан на основе этой статьи.
- 3.1 Загрузите и установите приложение, которое поддерживает PYC файлы