我做了一个小型Python应用程序(版本3.9.13)来将信息发送到门户应用程序上的webapi。一切正常;直到我尝试制作可执行文件。我使用 virtualenv 和 pyinstaller 以及
--onefile --noconsole appname
和 scriptfile.py
来完成此操作。
生成的appname.exe被Windows Defender拦截;将其分类为:
程序:Win32/Wacapew.C!ml
我认为是误报;但我无法在客户站点上部署此问题。我从自己的命令行运行 python 脚本时没有收到任何警告。
这是已安装软件包的列表:
一开始使用Python 3.12。我有
.exe
文件处于隔离状态。
回退到 python 3.9.13(应该与 pyinstaller 兼容),我的应用程序看起来被感染了,我的virustotal 上只有 72 个站点中的 8 个站点。
如果没有
--onefile
选项,我的应用程序在 Virustotal 上的 72 个站点中只有 7 个站点看起来已被感染。
有什么想法吗?谢谢你。
安吉洛
这是因为它实际上并没有创建 Windows 应用程序本身。
程序正在提取二进制文件,然后运行它。
来自 单文件程序如何工作
单文件程序如何工作
引导加载程序也是单文件包的核心。何时开始 它在适当的临时文件夹位置创建一个临时文件夹 对于这个操作系统。该文件夹名为_MEIxxxxxx,其中xxxxxx是随机的 数量。
一个可执行文件包含所有 Python 的嵌入式存档 脚本使用的模块,以及任何的压缩副本 非 Python 支持文件(例如 .so 文件)。引导加载程序解压缩 支持文件并将副本写入临时文件夹。 这可能需要一些时间。这就是为什么单文件应用程序有点 启动速度比单文件夹应用程序慢。
这很可疑;这就是防病毒应用程序给出误报的原因。
这实际上很有启发性;我没有意识到它没有创建本机Windows应用程序。我假设它将 python 代码编译为本机 x86 机器代码。我以为错了。