大约一个月前,我使用Pyinstaller和Inno设置为我的Python 3脚本生成安装程序。我的AVG业务版Antivirus刚刚开始抱怨今天的更新,该程序在用于启动程序的主要.EXE文件中具有Scgeneric Trojan Horse(在Pyinstaller创建的文件夹中,该文件具有所有Python" python"。起初,我只是认为这是AVG的假阳性,但是将.EXE文件提交给Virustotal,我得到了此分析:
https://virustotal.com/en/file/9b0c24a5a90d8e3a12d2e07E3F5E5E522224869C01732B2C79FDD8898A8986B8CF30406B8CF30406/Analysis
表明61个扫描仪中有11个检测到一个问题:
TheHacker Trojan/Agent.am
NANO-Antivirus Trojan.Win32.Agent.elyxeb
DrWeb Trojan.Starter.7246
Yandex Trojan.Crypren!52N9f3NgRrY
Jiangmin Trojan.Agent.asnd
SentinelOne (Static ML) static engine - malicious
AVG SCGeneric.KTO
Rising Malware.Generic.5!tfe (thunder:5:ujHAaqkyw6C)
CrowdStrike Falcon (ML) malicious_confidence_93% (D)
Endgame malicious (high confidence) 20170503
Zillya Dropper.Sysn.Win32.5954
现在我不能说这些其他扫描仪是我之前听说过的……但是我仍然担心它不仅是avg给出假阳性的。
我已向AVG提交了.EXE文件以进行分析。希望他们能回到他们认为试图检测到的一切。
我还能使用Pyinstaller做其他事情来制作它,以使其创建的.exe启动器不会被视为特洛伊木马?>我总是与Virustotal的Pyinstaller获得一些误报。这就是我修复的方式:
Pyinstaller配备了用于不同OSS的预编译引导加载程序二进制文件。我建议您自己在机器上编译它们。确保机器上的所有内容都一致。对于Windows 64位,安装Python 64位。下载用于Windows的Pyinstaller 64位。确保安装了与您的Python相对应的Visual Studio(VS(,请检查下面:
https://wiki.python.org/moin/windowscompilers
用V。在计算机上编译Pyinstaller的引导加载程序。它会自动更新run.exe,runw.exe,run_d.exe,runw_d.exe,in downloadeddpypyinstallerfolder pyinstaller bootloader bootloader windows-64bit。在下面查看有关如何编译引导程序的更多信息:
https://pyinstaller.readthedocs.io/en/stable/bootloader-building.html
最后,安装pyinstaller。在Pyinstaller目录中,运行
python setup.py install
我能够在https://secure.avg.com/submit-sample上提交有关文件的"报告错误检测"页面。我很快收到了回复(我不记得确切的时间,但不到一天(,他们已经分析了我的文件并确定它没有病毒。他们说,他们已经调整了病毒的定义,以免触发假阳性。我更新了定义,但仍在触发,所以我再次通过病毒定义版本与它们联系,然后我听到我的版本不够高 - 我认为我的定义有些延迟,因为我从本地服务器。但是在一天之内,我有了正确的定义版本,误报不再触发。
因此,如果您对AVG的假阳性,我建议使用此解决方案 - 相当快,容易解决该问题。
我的小文档注册项目代码面临着同样的问题。
我的临时解决方案是允许Windows Defender和
中的应用程序其他解决方案是使用命令pyinstaller filename.py
而不是pyinstaller --onefile filename.py
。
我不知道它是否正确。但是它对我有用。
我对这个问题感到困惑两天,最后发现了我的应用程序问题。问题是该应用程序的图标。
tkinter的示例:
root.iconbitmap('./icon.ico')
当我删除这条代码时,假阳性特洛伊木马就消失了。
另外,当将.py文件转换为.exe时,请确保不使用--icon
依赖关系。否则,这将导致相同的假阳性特洛伊木马检测。
我在数周内搜索了许多博客。但是我什么也没发现。今天,我找到了一种将PY转换为EXE而没有任何病毒错误的方法。
病毒总报告
因此,在这种方法中,您不需要发送任何报告。实际上它非常简单。
您需要安装一个名为 nuitka 的模块。
python -m pip install nuitka
然后,您需要从文件路径打开命令。并使用命令; python -m nuitka --mingw64 filename.py
仅此而已。
您可以使用命令 nuitka --help
您可以在-nuitka指南
我使用python 3.8.5和pyinstaller 4.5.1
在我的情况下,第一个EXE构建被防病毒(Windows Defender(接受,但随后的构建被标记为具有特洛伊木马。我每次构建可执行文件
时都使用pyinstaller --clean
选项解决了它重新编译,然后手动重新安装您的pyinstaller bootloader。
这是我一段时间以来遇到的问题,我和我的朋友在许多其他人的帮助下弄清楚了这一决议。它几乎总是可以解决问题。
我在我的媒介博客上发布了具体步骤。共享下面的链接,但基本步骤如下
- 在您的项目中清除Pyinstaller文件,并重建
- 卸载pyinstaller
- 用您的编译器构建Pyinstaller启动加载程序
- 安装新编译的Pyinstaller
- 与Pyinstaller重建您的EXE,并确保不会被标记为病毒
如何解决Python Pyinstaller误报特洛斯病毒
- 部分1.手动编译您的pyinstaller bootloader
- 第2部分。与反病毒开发人员合作
从3.4中恢复到pyinstaller 3.1.1从3.4解决我的末端(至少暂时(。
正如@boogie_bullfrog所述,恢复到以前的版本可能是一个解决方案。但是,我使用 *.spec文件存储一些数据(例如图片和图标(。我有最新的3.5版本(2019年8月(,并移至3.1.1汇编时会导致错误(可能是由于支持Python 3.7(。
现在,最简单的解决方案是降级到3.4
它支持Pyinstaller 3.5的规格,Windows 10内置防火墙
我所做的是解决问题是求解此(使EXE文件不可检测为病毒(是通过在CMD中键入pyinstaller降级:pip install pyinstaller == 4.1.0
,顺便说一下,它在3.4.0上没有工作,所以我只是随机选择了该版本(4.1(,到目前为止它看起来很漂亮:>我很确定它比仅在一个版本上都可以使用,但是我亲自经历了
我在Windows下的pyinstaller exe也有类似的问题。阿维拉(Avira(将该文件视为潜在的危险(由于启发式方法,这意味着某些片段对于病毒而言是典型的,但实际上没有发现病毒(。
。请记住,您生成的EXE文件是唯一的(因此,Avast扫描仪通常会返回消息"您找到了一个稀有文件,我们正在进行快速测试&quot&quot&quot',并且延迟执行15秒钟进行更彻底的测试(
我的解决方案包括一些步骤:
- 我已将EXE上传到https://www.virustotal.com/gui/home/upload,以使用许多扫描仪进行检查。如果只有一个或两个检测到病毒,则应该在安全的一面。
- 为了使您的本地病毒扫描仪接受该文件,您可以手动接受计算机,但这不能解决潜在的问题,因此在其他计算机上仍将标记为病毒。
- 因此,我将文件报告为对avira的假阳性,这可以通过电子邮件发送。其他扫描仪具有类似的反馈线。我在一天之内通过电子邮件收到了反馈,这还可以,我的PC上的扫描仪现在同意。希望这有助于我的exe下一次迭代,以保持干净。