由PyInstaller制作的程序现在被AVG视为特洛伊木马

时间:2017-05-04 07:59:11

标签: pyinstaller antivirus virus

大约一个月前,我使用PyInstaller和Inno Setup为我的Python 3脚本生成了一个安装程序。我的AVG商业版AntiVirus刚开始抱怨今天的更新,该程序在用于启动程序的主.exe文件中有一个SCGeneric特洛伊木马(在由PyInstaller创建的文件夹中,包含所有Python“胆量”)。起初我只是认为它在AVG中是误报,但是将.exe文件提交给VirusTotal我得到了这个分析:

https://virustotal.com/en/file/9b0c24a5a90d8e3a12d2e07e3f5e5224869c01732b2c79fd88a8986b8cf30406/analysis/1493881088/

这表明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启动程序不被视为特洛伊木马?

感谢您的任何意见。

8 个答案:

答案 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秒,进行更彻底的测试)。

我的解决方案包括以下步骤:

  • 我已将该exe上传到https://www.virustotal.com/gui/home/upload,以便使用许多扫描仪进行检查。如果只有一两个检测到病毒,那么您应该处于安全状态。
  • 为了使您的本地病毒扫描程序能够接受该文件,您可以为您的计算机手动接受该文件,但这不能解决根本的问题,因此在其他计算机上仍会将该文件标记为病毒。
  • 因此,我向Avira报告了该文件为误报,只需通过电子邮件发送即可完成。其他扫描仪具有类似的反馈线。没问题,我在一天之内通过电子邮件收到了反馈,我的电脑上的扫描仪对此表示同意。希望这对我的exe的下一次迭代有所帮助,以使其保持干净。

答案 7 :(得分:0)

我所做的是解决这个问题(使 exe 文件无法检测为病毒)是通过键入 cmd 来降级 pyinstaller:pip install pyinstaller==4.1.0

顺便说一下,它在 3.4.0 上不起作用,所以我只是随机选择了那个版本 (4.1),到目前为止它看起来还不错:> 我很确定它不仅适用于那个版本,而且是我亲身体验过的