搞定了
^_^
main.pyc是用pyi-archive_viewer从elf文件中提取出来的
main.cpython-32.pyc是用pyinstaller生成的
用pyi-archive_viewer从elf文件中提取出来的main.pyc在文件开始的位置少了12个字节,3个dword
第1个dword是MAGIC_NUMBER
第2个dword可能是 mtime
第3个dword可能是 source_size
注意,第2个和第3个是“可能是”,这个之后再说
MAGIC_NUMBER由一个版本数字和 0x0d 0x0a构成
第2个和第3个可以填0
版本号我就选python 3.6最新的 python 3.6rc1,也就是 3379
3379是0x0d33
MAGIC_NUMBER就是 33 0d 0d 0a
可能是不同的版本导致的,windows和linux就不一样
windows需要在文件开始位置添加16个字节
linux需要添加12个字节
MAGIC_NUMBER必须填存在的版本,高版本不行就试低版本,我在linux中用3379
- Python 3.6rc1 3379 (more thorough __class__ validation #23722)
复制代码
具体以可以看一看你系统中的_bootstrap_external.py文件
linux 路径:
- /usr/lib/python3.6/importlib/_bootstrap_external.py
复制代码