大约一个月前,我使用PyInstaller和Inno Setup为我的Python 3脚本生成了一个安装程序。我的AVG商业版AntiVirus刚开始抱怨今天的更新,该程序在用于启动程序的主.exe文件中有一个SCGeneric特洛伊木马(在由PyInstaller创建的文件夹中,包含所有Python“胆量”)。起初我只是认为它在AVG中是误报,但是将.exe文件提交给VirusTotal我得到了这个分析:
这表明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不仅仅是假阳性。
我已将有问题的.exe文件提交给AVG进行分析。希望他们能够回避他们认为他们试图发现的任何事情。
我可以用PyInstaller做些什么来使它创建的.exe启动程序不被视为特洛伊木马?
感谢您的任何意见。
答案 0 :(得分:6)
我的小文档注册项目代码遇到了同样的问题。
我的临时解决方案是在 Windows Defender 中允许该应用程序和
其他解决方案是使用命令 pyinstaller filename.py
而不是 pyinstaller --onefile filename.py
。
不知道对不对。但它对我有用。
答案 1 :(得分:2)
我对这个问题困惑了两天,终于发现我的申请有问题。问题出在应用程序的图标上。
tkinter 示例:
root.iconbitmap('./icon.ico')
当我删除这行代码时,误报木马就消失了。
另外,在将 .py 文件转换为 .exe 时,请确保不要使用 --icon
依赖项。否则,这将导致同样的误报木马检测。
答案 2 :(得分:1)
我总是从VirusTotal获得Pyinstaller的误报。这是我解决的方法:
Pyinstaller带有针对不同操作系统的预编译引导加载程序二进制文件。我建议您在计算机上自己编译它们。确保机器上的所有内容都一致。对于Windows 64位,请安装Python 64位。下载适用于Windows的PyInstaller 64bit。确保已安装与您的Python对应的Visual Studio(VS),请检查以下内容:
https://wiki.python.org/moin/WindowsCompilers
使用VS在计算机上编译Pyinstaller的引导程序。它会自动更新DownloadedPyinstallerFolder \ PyInstaller \ bootloader \ Windows-64bit中的run.exe,runw.exe,run_d.exe,runw_d.exe。检查下面的更多信息:
https://pythonhosted.org/PyInstaller/bootloader-building.html
最后安装Pyinstaller。在Pyinstaller目录中运行
python setup.py安装
答案 3 :(得分:1)
正如@boogie_bullfrog所说,恢复为以前的版本可能是一种解决方案。但是我使用* .spec文件来存储一些数据(如图片和图标)。我拥有最新的3.5版本(2019年8月),并且在编译应用时移动到3.1.1导致错误(可能是由于支持Python 3.7)。
所以现在最简单的解决方案是降级到3.4
它支持pyinstaller 3.5的规范,Windows 10内置防火墙未检测到onefile-app
答案 4 :(得分:0)
我能够在https://secure.avg.com/submit-sample向AVG的“报告错误检测”页面提交相关文件。我很快收到回复(我记不清究竟有多长时间,但不到一天),他们分析了我的文件,并确定它没有病毒。他们表示,他们已经调整了病毒定义,因此不会再引发误报。我更新了我的定义并且它仍然在触发,所以我再次使用我的病毒定义版本与他们联系,我听说我的版本不够高 - 我认为我的定义有一些延迟,因为我从本地服务器。但是在一天之内我得到了正确版本的定义,并且误报不再触发。
因此,如果您对AVG有误报,我会建议使用此解决方案 - 相当快速,轻松地解决问题。
答案 5 :(得分:0)
从3.4恢复到PyInstaller 3.1.1可以解决类似的问题(至少是暂时的)。
答案 6 :(得分:0)
我在Windows下使用pyinstaller exe遇到类似的问题。阿维拉(Avira)将该文件隔离,因为它被认为具有潜在危险(由于启发式,这意味着某些片段对于病毒来说很典型,但实际上并未发现病毒)。
请记住,您自己生成的exe文件是唯一的(因此,Avast扫描程序通常会返回一条消息“您找到了一个稀有文件,我们正在进行快速测试”,并将执行延迟15秒,进行更彻底的测试)。
我的解决方案包括以下步骤:
答案 7 :(得分:0)
我所做的是解决这个问题(使 exe 文件无法检测为病毒)是通过键入 cmd 来降级 pyinstaller:pip install pyinstaller==4.1.0
顺便说一下,它在 3.4.0 上不起作用,所以我只是随机选择了那个版本 (4.1),到目前为止它看起来还不错:> 我很确定它不仅适用于那个版本,而且是我亲身体验过的