有多种解决方案可用于从 Windows 二进制文件中提取 Pyc 文件,然后使用 uncompyle2 或 uncompyle6 反编译它们。
但是,我有一个 Linux ELF 64 位二进制文件,它是使用用于 Python 的打包程序之一编译的(可能是 CX Freeze 或 PyInstaller)。我不确定确切的包名称。
更新:
文件命令输出:
bin: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=212a49c7fff7342713aec6af6789abbaf3a8014, stripped
我还有一个名为 libpython2.7.so.1.0 的 .so 文件,我认为它是 python 解释器。
二进制文件中还有一个 .pydata 部分,如下所示:
[27] pydata PROGBITS 0000000000000000 00007a48
00000000000a0c47 0000000000000000 0 0 1
二进制文件中包含字符串,如下所示:
Py_SetPythonHome
Cannot dlsym for Py_SetPythonHome
Error loading Python lib '%s': dlopen: %s
Error detected starting Python VM.
libpython2.7.so.1.0
所以,我很确定它是编译成 Linux 二进制文件的 Python 代码。
这些项目都不适合我。
unfrozen_binary - 给出一个错误,因为在 common.py 中它导入了不可用的反编译库。
pyThaw - 它利用了radare2,但是当我将它与我的二进制文件一起使用时,它只是挂起并且不提取源代码。
是否有任何替代解决方案可以使用 Linux 的 python 字节码反编译此类精灵二进制文件?