【问题标题】:can python source code be extracted from a single file executable可以从单个文件可执行文件中提取python源代码吗
【发布时间】:2021-01-03 07:30:17
【问题描述】:

我有一个使用 pyinstaller 创建的 Python 软件。我使用 pyinstaller 创建了一个 60 MB 的可执行文件,其中包含我所有的模块依赖项。

我已经使用了 pyinstaller 代码:

pyinstaller --noconfirm --onefile --windowed  file.py

我打算向我认识的很多人发布这个软件的测试版。我知道如果我创建一个包含脚本的目录,人们可以提取源代码,但是如果它只是一个 .exe 文件,那么有人仍然可以从可执行文件中提取源代码吗?

我已经研究过在创建可执行文件之前使用 pyarmor 并混淆我的代码,但是当我想将所有内容编译成单个 exe 文件时,这需要发送某种文件夹。

【问题讨论】:

  • pyinstaller 不会将 python 编译为机器代码(如 C/C++),但它只会使用 python 解释器、模块和您在 .pyc 文件中的代码创建自解压 .zip 文件。当您运行此 .exe 时,它​​会创建临时文件夹、提取文件并运行您的脚本。然后你甚至可以找到这个文件夹并获取所有提取的文件。你可以阅读更多How the One-File Program Works

标签: python python-3.x pyinstaller exe executable


【解决方案1】:

From the documentation

捆绑的应用程序不包含任何源代码。但是,PyInstaller 捆绑了已编译的 Python 脚本(.pyc 文件)。这些原则上可以被反编译以揭示代码的逻辑。

所以仍然可以对代码进行逆向工程,但它不是源代码。如果您想查看字节码的样子,可以使用dis tool

【讨论】:

  • 还有反编译字节码的工具。
猜你喜欢
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-14
  • 1970-01-01
  • 2016-06-06
  • 2011-02-09
  • 1970-01-01
相关资源
最近更新 更多