Pyinstaller生成的.exe文件被Windows Defender报告为 [无发布者]。

8

我编写了一个Python代码,并用pyinstaller将其转换为.exe文件。但问题是,由于没有发布者,每次计算机运行我的程序时,Windows Defender都会弹出警报,说没有发布者,所以程序不确定...

有人知道如何将.exe文件的发布者从无更改为某个名称,或者如何在pyinstaller中实现发布者吗?


请查看此问题:https://dev59.com/a1cP5IYBdhLWcg3w0tQ0 - 我重新构建了pyinstaller的引导程序,这解决了Defender的检测问题。 - xioxox
2个回答

7
简单来说,这与PyInstaller无关。这是Windows的任何exe文件都存在的一般问题。现在您需要对exe文件进行“代码签名”。实际上,这是一个伪装成安全增强的赚钱计划。
举个例子,您可以从DigiCert购买证书。他们是微软自动识别的大授权机构之一。 https://www.digicert.com/code-signing 或者搜索“代码签名”以获取其他选项。
您也可以免费进行自签名。请查看此SO帖子: Signing a Windows EXE file 自签名的问题在于用户必须首先安装您的自定义密钥才能识别您签名的exe文件。但是……如果您想要省几块钱而愿意经历一些麻烦,有一些技巧可以静默安装它。

3
不要在用户的机器上安装根证书,以便您可以使用自签名证书。这会危及他们的安全。如果您的根证书私钥被攻击,则您的用户将面临风险。如果您不愿意/无法购买代码签名证书,那么您可能也不愿意/无法妥善保护根证书。 - sourcenouveau
1
有趣。请详细说明如何“正确地”保护您的私钥。您是在暗示黑客会闯入您的本地机器(或存储密钥的任何地方),然后使用它生成自己签名的exe,以利用某些目标用户安装了您的自签名根证书的事实吗?还是有一些逆向工程的技巧?无论可能采取什么行动,对于恶意攻击者来说,似乎要经历很大的麻烦才能达到一个可以通过许多其他更容易的方式解决的目标。 - BuvinJ
3
密钥应该加密、进行访问控制、安全备份等。我想象一下私钥通过被入侵的网络或开发机器泄漏...公司经常会遭受黑客攻击。其次,攻击者已经经常向合法应用程序注入恶意载荷,并通过BitTorrent和“破解应用程序”目录进行分发。如果他们可以签署恶意应用程序,它就可以伪装成合法的应用程序。被数千或数百万人使用的应用程序是有价值的攻击目标。 - sourcenouveau
2
谢谢。这些都是有效的观点。绝对的,你列举的应该作为自签名的最佳实践。但我认为上下文很关键。请注意,原始问题是关于分发由PyInstaller生成的exe文件。在其中存在重大安全漏洞,这比签名细节更为重要。这本身就是一个庞大的主题。如果您要分发大量程序,那么您可能可以负担得起购买证书,符合您最初的建议。 - BuvinJ

0

这是与 Windows Defender 相关的已知误报。当在 Windows 10 VM 上测试我的文件时,它们也会发生这种情况,并且其他人也会遇到同样的问题。另外,Windows Defender "智能屏幕" 可能会阻止任何未签名的文件,即使使用其他杀毒软件,但您应该能够单击 更多信息 然后继续。

您可以将文件从 Windows Defender 排除在外,但最好的解决方案是使用另一款杀毒软件,因为 Windows Defender 实际上并不是特别好。 (这不仅基于我的经验,而是基于 AV 测试) 我不确定还有哪些杀毒软件存在相同的误报,但我知道有几款。

您也可以在 VM 上进行测试,在此期间您可以禁用 Windows Defender 和智能屏幕,同时在主机系统上启用它。 (VirtualBox 是 Windows 的一个很好的免费 VM 软件)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接