#按站上大师的教程从EXE到 aaa.pyc都正常
#【直到pyc转py运行:uncompyle6 aaa.pyc > aaa.py 一直提示下列错误】
Unknown magic number 227 in aaa.pyc
通过工具插入第一行版本号参数也无法解决,求大师指点
#操作环境:win10;python 3.8——3.11都测了
该回答引用ChatGPT-3.5,仅供参考,不保证完全正确
根据您提供的信息,您在尝试将一个exe文件反编译生成pyc文件,然后将pyc文件转换回py源文件时遇到了错误"Unknown magic number 227"。
这个错误通常表示尝试解析不兼容的pyc文件。每个Python版本都有一个特定的"magic number"与之对应,用于标识编译后的字节码文件。当您尝试使用不同的Python版本来解析pyc文件时,就会出现这个错误。
由于您提供的信息有限,我无法确定您的exe文件是由哪个Python版本编译生成的。然而,根据您提供的信息,您尝试了Python 3.8到3.11的多个版本,但仍然遇到了相同的错误。这表明您可能正在尝试使用错误的方法或工具。
我建议您尝试使用其他反编译工具,例如uncompyle2或pycdc,看看是否可以成功地将pyc文件转换回py源文件。这些工具可能与您的Python版本兼容,并且能够正确解析您的pyc文件。
另外,请确保您的exe文件是由Python代码编译生成的,而不是使用其他编程语言或工具创建的。如果exe文件不是由Python编译生成的,那么无法直接将其转换回py源文件。
该回答引用NewBing,仅供参考,不保证完全正确
根据我的搜索结果,您遇到的错误是由于您的exe文件是用pyinstaller工具打包的,而这个工具会将代码文件的magic number(python的版本及编译时间)给清除掉,所以反编译时候需要将magic number添加回去才能识别³。magic number我们可以通过解压主目录下的struct文件中提取出来(一般是前16个字节,可以对比打包前的源文件),将struct文件体中的前16个字节提取出来,然后在添加到文件中,然后再执行uncompyle6反编译³。
另外,您也可以参考这个回答,它介绍了如何在Python 3中使用importlib.util.MAGIC_NUMBER或imp.get_magic方法来获取当前Python版本的magic number²。
源: 与必应的对话, 2023/7/18
(1) python源码打包成exe、exe反编译、pyd加密防止反编译_python 的exe 防止反编译_故障诊断与python学习的博客-CSDN博客. https://blog.csdn.net/m0_47410750/article/details/125555120.
(2) How to find out the magic number for the .pyc header in Python 3. https://stackoverflow.com/questions/53833455/how-to-find-out-the-magic-number-for-the-pyc-header-in-python-3.
(3) Bad magic number while trying to import .pyc module. https://stackoverflow.com/questions/12233837/bad-magic-number-while-trying-to-import-pyc-module.
(4) ImportError: Unknown magic number 227 in file.pyc #164 - GitHub. https://github.com/rocky/python-uncompyle6/issues/164.