Конвертируйте файл .py c в файл .py с uncompyle6 (ошибка с неправильной маршализацией данных) - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь преобразовать файл flag.py c в файл flag.py .
Вот мои процедуры: flag.py c -> flag.pyasm -> flag2.py c -> flag.py
Однако последний шаг ( flag2.py c -> flag.py ) генерирует ошибка данных плохого маршала
Чтобы определить проблему, я дважды проверил flag2.py c file. Я обнаружил, что flag2.py c отличается от flag.py c. И поскольку файл .py c трудно читать, я решил преобразовать flag2.py c в flag2.pyasm , чтобы увидеть разницу между flag.pyasm и flag2.pyasm . Тем не менее, это дает мне похожую ошибку.

Вот как каждый файл будет сгенерирован:
flag.py c является исходным .py c file.
flag.pyasm генерируется flag.py c с xdis и xasm
flag2.py c генерируется flag.pyasm с xdis и xasm
flag2.pyasm генерируется flag2.py c с xdis и xasm
flag.py генерируется flag2.py c с uncompyle6

Вот команды для каждой процедуры:
1. flag.py c -> flag.pyasm pydisasm --asm flag.pyc > flag.pyasm
2. flag.pyasm -> flag2.py c ./xasm/xasm_cli.py flag.pyasm
3. flag2.py c -> flag2.pyasm pydisasm --asm flag2.pyc > flag2.pyasm
4. flag2.py c -> flag.py uncompyle6 flag2.pyc

Первый шаг и второй шаг работают нормально.
Однако третий и четвертый шаг дают мне похожую ошибку ( плохой маршал дат ошибка ).

Вот ошибка третьего шага:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/xdis/load.py", line 242, in load_module_from_file_object
    co = marshal.loads(bytecode)
ValueError: bad marshal data (unknown type code)
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/xdis/load.py", line 242, in load_module_from_file_object
    co = marshal.loads(bytecode)
ValueError: bad marshal data (unknown type code)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.8/bin/pydisasm", line 10, in <module>
    sys.exit(main())
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.cae(self.cae(self.callback, **ctx.params)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/xdis/bin/pydisasm.py", line 75, in main
    disassemble_file(path, sys.stdout, asm, header, show_bytes)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/xdis/main.py", line 270, in disassemble_file
    version, timestamp, magic_int, co, is_pypy, source_size, sip_hash = load_module(filename)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/xdis/load.py", line 135, in load_module
    return load_module_from_file_object(
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/xdis/load.py", line 255, in load_module_from_file_object
    raise ImportError(
ImportError: Ill-formed bytecode file /Users/frank/Desktop/python-xasm/xasm/flag2.pyc
<class 'ValueError'>; bad marshal data (unknown type code)

Моя среда MacOs.My python версия 3.8.0 с новейшая xdis, xasm, uncompyle6
Есть предложения?

...