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

Jef*_*f H 13 antivirus virus pyinstaller

大约一个月前,我使用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 
Run Code Online (Sandbox Code Playgroud)

现在我不能说这些其他扫描仪是我之前听说过的......但我仍然担心它不只是AVG给出了误报.

我已将有问题的.exe文件提交给AVG进行分析.希望他们能够回避他们认为他们试图发现的任何事情.

还有什么我可以用PyInstaller来做它,以便它创建的.exe启动器不会被视为特洛伊木马?

感谢您的任何意见.

Sor*_*ush 36

我总是从VirusTotal得到一些 Pyinstaller 的误报。这是我修复它的方式:

Pyinstaller 带有针对不同操作系统的预编译引导加载程序二进制文件。我建议你自己在你的机器上编译它们。确保您的机器上的所有内容都是一致的。对于 Windows 64 位,安装 Python 64 位。下载适用于 Windows 的 PyInstaller 64 位。确保安装了与您的 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://pyinstaller.readthedocs.io/en/stable/bootloader-building.html

最后安装 Pyinstaller。在 Pyinstaller 目录中运行

python setup.py 安装

  • 对我来说这根本不起作用。在此之前,我检测到了 7 次 VirusTotal。当我到了15之后。 (7认同)
  • “对于 Windows 64 位,安装 Python 64 位。下载适用于 Windows 的 PyInstaller 64 位” <- 这对我有帮助,谢谢。我正在使用 Windows 的 pyenv fork,并安装 python 3.7.0。这是错误的,我需要安装 python 3.7.0-amd64。现在 pyinstaller 生成的二进制文件不再被我大学的防病毒软件标记。请注意,在 linux 上测试时,3.7.0-amd64 指的是不存在的版本,因此我不能再在 linux 上依赖 pyenv 的 .python-version 文件。我改用 PYENV_VERSION 环境变量。 (6认同)
  • 这非常有用 - 重建引导加载程序消除了我的应用程序(包括 Microsoft Defender)上的许多错误检测。 (5认同)
  • 非常感谢您的回答。工作很有魅力。我确实学到了一些东西,尽管有太多的病毒是用默认的 PyInstaller 引导加载程序编译的,并且已经毁了我们所有人。 (4认同)
  • 我已经完成了上述编译引导加载程序的步骤,然后通过“python setup.py install”进行安装,但它在TrendMicro OfficeScan(Apex One Security Agent)中没有用:( (2认同)

Jef*_*f H 12

我能够将相关文件提交到 AVG 的“报告错误检测”页面,网址https://secure.avg.com/submit-sample。我很快就收到了回复(我不记得确切多久了,但不到一天),他们分析了我的文件并确定它没有病毒。他们说他们已经调整了他们的病毒定义,这样就不会再触发误报。我更新了我的定义但它仍然在触发,所以我再次与他们联系并使用我的病毒定义版本,我听说我的版本不够高 - 我认为我的定义有一些延迟,因为我从本地服务器。但是在一天之内,我得到了正确版本的定义,并且不再触发误报。

因此,如果您对 AVG 有误报,我会推荐此解决方案 - 相当快速且轻松地解决问题。


Ale*_*sov 8

我在这个问题上困惑了两天,终于发现我的应用程序有问题。问题出在应用程序的图标上。

tkinter 的示例:

root.iconbitmap('./icon.ico')
Run Code Online (Sandbox Code Playgroud)

当我删除这行代码时,误报木马就消失了。

--icon另外,在将 .py 文件转换为 .exe 时,请确保不要使用依赖项。否则,这将导致同样的误报木马检测。

  • 所以你是说我们不能添加图标?如果不使用该标志,还如何将其添加到您的应用程序中? (2认同)

Rov*_*tha 7

我搜索了很多博客几个星期。但我什么也没找到..今天我找到了一种将py转换为exe并且没有任何病毒错误的方法。

病毒总数报告

所以在这种方法中你不需要发送任何报告。实际上这很简单。

您需要安装一个名为Nuitka的模块。

python -m pip install nuitka

然后您需要从文件路径打开命令。并使用命令; python -m nuitka --mingw64 filename.py

就这样。

你可以使用命令 nuitka --help

您可以在 - Nuitka 指南找到更多信息


小智 6

我的小文档注册项目代码遇到了同样的问题。

我的临时解决方案是在 Windows Defender 中允许该应用程序和

其他解决方案是使用命令pyinstaller filename.py而不是pyinstaller --onefile filename.py.

我不知道它是否正确。但它对我有用。

  • 删除 `--onefile` 可能在这里有所帮助。根据另一个线程,PyInstaller 用于将文件捆绑到一个存档中的方法使其对防病毒软件显得可疑。 (4认同)

小智 6

我使用 python 3.8.5 和 pyinstaller 4.5.1 遇到了同样的问题

就我而言,第一个 exe 版本已被防病毒软件 (Windows Defender) 接受,但后续版本被标记为含有木马。pyinstaller --clean我每次构建可执行文件时都使用该选项解决了这个问题