Pyinstaller .exe 抛出 Windows Defender [无发布者]

Posted

技术标签:

【中文标题】Pyinstaller .exe 抛出 Windows Defender [无发布者]【英文标题】:Pyinstaller .exe throws Windows Defender [no publisher] 【发布时间】:2017-11-06 17:48:24 【问题描述】:

我开发了一个 Python 代码,并将其转换为 .exepyinstaller,但问题是没有发布者,因此每次计算机运行我的程序时,Windows Defender 都会抛出一个警报,提示没有出版商所以程序不确定...

有谁知道如何将.exe 的发布者从无更改为某事或如何在pyinstaller 中实现发布者?

【问题讨论】:

请看这个问题:***.com/questions/43777106/… - 我为 pyinstaller 重建了引导加载程序,它为我修复了 Defender 检测。 【参考方案1】:

简短的回答是这与 PyInstaller 无关。这是最新版本的 Windows 中任何 exe 的普遍问题。您现在需要对您的 exe 进行“代码签名”。这实际上是一个伪装成增强安全性的赚钱计划。

例如,您可以从 digicert 购买证书。它们是 MS 将自动识别的大型授权代理之一。 https://www.digicert.com/code-signing

或谷歌“代码签名”以获得其他选项。

您也可以免费自行签名。看看这个 SO 帖子: Signing a Windows EXE file

自签名的问题是用户必须先安装您的自定义密钥才能识别您签名的 exe。但是......如果你想通过麻烦来节省几美元,那么首先有一些技巧可以静默安装。

【讨论】:

不要在您用户的机器上安装根证书,以便您可以使用自签名证书。它损害了他们的安全。如果您的根证书的私钥被泄露,那么您的用户很容易受到攻击。如果您不愿意/不能购买代码签名证书,您可能也不愿意/不能正确保护根证书。 有趣。请详细说明如何“正确”保护您的私钥。您是否建议黑客将闯入您的本地计算机(或您保存密钥的地方),然后用它生成他们自己的签名 exe,以利用某些目标用户安装您的自签名根证书这一事实?还是有一些逆向工程技巧?无论做什么,对于恶意的人来说似乎都是一个巨大的麻烦,以达到可能以许多其他更容易的方式解决的目的。 密钥应该被加密、访问控制、安全备份等。我想象着通过受感染的网络或开发机器泄露私钥......公司一直被黑客入侵。其次,攻击者已经定期向合法应用程序注入恶意负载,并通过 BitTorrent 和“破解应用程序”目录进行分发。如果他们可以签署不良应用程序,它就可以伪装成合法的。成千上万人使用的应用程序是有价值的目标。 谢谢。这些都是有效的点。当然,您所列举的应该作为自签名的最佳实践来完成。我认为上下文是关键。请注意,最初的问题是关于分发由 PyInstaller 生成的 exe。其中存在重大的安全漏洞,这胜过这个标志细节。这本身就是一个很大的话题。当然,如果您要分发大量程序,根据您最初的建议,您可能只需购买证书即可。【参考方案2】:

这是已知的 Windows Defender 误报。在 Windows 10 VM 上测试时,我的文件也会发生这种情况,其他人也会发生这种情况。此外,即使使用其他防病毒软件,Windows Defender 的“Smartscreen”也可能会阻止任何未签名的文件,但您应该能够单击更多信息然后继续

您可以从 Windows Defender 中排除该文件,但最好的解决方案是使用其他防病毒软件,因为 Windows Defender 无论如何都不是很好。 (这不仅基于我的经验,还基于 AV 测试) 我不确定还有哪些其他抗病毒药物具有相同的误报率,但我知道有一些。

您还可以在 VM 上进行测试,您可以在其中禁用 Windows Defender 和 Smartscreen,同时在主机系统上保持启用状态。 (VirtualBox 是一款出色的 Windows 版免费 VM 软件)

【讨论】:

以上是关于Pyinstaller .exe 抛出 Windows Defender [无发布者]的主要内容,如果未能解决你的问题,请参考以下文章

pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行

pyinstaller - 冻结应用程序时 QtWebEngineWidgets 抛出 dll 错误

Pyinstaller - 独立的 .exe

Python执行pyinstaller打包生成的exe文件实战

详解python文件打包成exe(pyinstaller简介.安装.打包.常见问题)

使用pyinstaller将Python打包为exe文件