uncompyle6在反编译* .pyc文件时引发解析错误

时间:2016-12-31 16:40:27

标签: python

在尝试通过此帖Decompile *.pyc file using uncompyle2帮助其他成员时,我在尝试使用uncompyle6反编译* .pyc时遇到以下错误,错误如下:

File "/usr/local/lib/python2.7/site-packages/uncompyle6/semantics/pysource.py", line 2231, in build_ast
    raise ParserError(e, tokens)
uncompyle6.semantics.parser_error.ParserError: --- This code section failed: ---

   2       0  JUMP_ABSOLUTE       120  'to 120'
           3  SETUP_WITH          364  'to 370'
           6  STOP_CODE
           7  JUMP_ABSOLUTE       168  'to 168'
          10  SETUP_WITH        22357  'to 22370'
          13  LOAD_CONST            2  ''
          16  LOAD_CONST            2  ''
          19  POP_TOP
          20  RETURN_VALUE
          -1  RETURN_LAST

Parse error at or near `SETUP_WITH' instruction at offset 3

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试反编译(decom py le)一段任意数据。你那里没有有效的字节码,不适用于常规的Python解释器。

JUMP_ABSOLUTE用于跳回循环的开头。它不与with语句一起使用,这是SETUP_WITH操作码处理的语句。跳转可能在代码块之外,在本例中是 forward 而不是后退,因此uncompile6正确地将此标记为无效。

字节码有可能是模糊,其中字节码含义从其正常位置改变。字节码只是一个字节序列,每个字节都有一个特定的含义(与操作数值一起)。例如,Dropbox Python解释器已经大大改变了该表,试图阻止随意好奇的工程师查看他们的代码(pydecompyle6补偿这一点)。

相关问题