使用 PyInstaller 制作的程序现在被 AVG 视为特洛伊木马
Program made with PyInstaller now seen as a Trojan Horse by AVG
大约一个月前,我使用 PyInstaller 和 Inno Setup 为我的 Python 3 脚本生成了一个安装程序。我的 AVG Business Edition AntiVirus 刚开始抱怨今天的更新,该程序在用于启动程序的主 .exe 文件中有一个 SCGeneric 特洛伊木马程序(在 PyInstaller 创建的文件夹中,其中包含所有 Python "guts").起初我只是认为这是 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 启动器不被视为木马吗?
感谢任何意见。
我能够将有问题的文件提交到 AVG 的 "Report a false detection" 页面 https://secure.avg.com/submit-sample。我很快就收到了回复(我不记得确切的时间,但不到一天)他们分析了我的文件并确定它没有病毒。他们说他们已经调整了他们的病毒定义,这样它就不会再触发误报了。我更新了我的定义,它仍然在触发,所以我再次联系他们并提供我的病毒定义版本,我听说我的版本不够高——我认为我的定义有一些延迟,因为我从本地服务器。但在一天之内,我得到了正确的定义版本,并且误报不再触发。
因此,如果您对 AVG 有误报,我会推荐此解决方案 - 相当快速且容易地解决问题。
我总是从 VirusTotal 收到一些关于 Pyinstaller 的误报。我就是这样修复它的:
Pyinstaller 带有针对不同操作系统的预编译引导加载程序二进制文件。我建议在你的机器上自己编译它们。确保一切在您的机器上都是一致的。对于 Windows 64 位,安装 Python 64 位。下载 Windows 的 PyInstaller 64 位。确保安装了与您的 Python 相对应的 Visual Studio (VS),检查以下内容:
https://wiki.python.org/moin/WindowsCompilers
在你的机器上用VS编译Pyinstaller的bootloader。它会自动更新 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 安装
从 3.4 恢复到 PyInstaller 3.1.1 解决了我这边的类似问题(至少是暂时的)。
正如@boogie_bullfrog所说,恢复到以前的版本可能是一个解决方案。但是我使用 *.spec 文件来存储一些数据(如图片和图标)。我有最新的 3.5 版本(2019 年 8 月)并移动到 3.1.1 导致编译应用程序时出错(可能是由于支持 Python 3.7)。
所以现在最简单的解决方案是 降级到 3.4
它支持 pyinstaller 3.5 的规范,Windows10 内置防火墙
未检测到 onefile-app
我在 Windows 下的 pyinstaller exe 遇到了类似的问题。 Avira 将该文件置于隔离状态,因为它被认为具有潜在危险(由于启发式算法,这意味着某些片段看起来是病毒的典型片段,但实际上并未发现病毒)。
请记住,您自己生成的 exe 文件是独一无二的(因此,Avast 扫描仪通常会 returns 显示一条消息“您找到了一个罕见的文件,我们正在进行快速测试”,并且延迟执行 15 秒以执行更彻底的测试)。
我的解决方案包含以下步骤:
- 我已将 exe 上传到 https://www.virustotal.com/gui/home/upload 以使用许多扫描仪进行检查。如果只有一两个检测到病毒,那你就万无一失了。
- 为了让你的本地病毒扫描器接受该文件,你可以为你的计算机手动接受它,但这并不能解决根本问题,所以在其他计算机上它仍然会被标记为病毒。
- 因此我将该文件报告为误报给 Avira,只需通过电子邮件发送即可。其他扫描仪也有类似的反馈线路。一天之内,我通过电子邮件收到了反馈,说没问题,我电脑上的扫描仪现在也同意这一点。希望这有助于我的 exe 的下一次迭代,以便它保持干净。
这个问题我纠结了两天,终于发现我的应用有问题。问题出在应用程序的图标上。
tkinter 示例:
root.iconbitmap('./icon.ico')
当我去掉这行代码后,误报木马就没有了
此外,确保在将 .py 文件转换为 .exe 时不要使用 --icon
依赖项。否则,这将导致同样的误报木马检测。
我的小文档注册项目代码遇到了同样的问题。
我的临时解决方案是允许 windows defender 和
中的应用程序
其他解决方案是使用命令 pyinstaller filename.py
而不是 pyinstaller --onefile filename.py
。
不知道对不对。但这对我有用。
我所做的是解决这个问题(使 exe 文件无法检测为病毒)是通过在 cmd 中键入来降级 pyinstaller:pip install pyinstaller==4.1.0
顺便说一句,它在 3.4.0 上不起作用,所以我只是随机选择了那个版本 (4.1),到目前为止它看起来还不错 :>
我很确定它不仅适用于那个版本,而且我亲身体验过
重新编译,然后手动重新安装 Pyinstaller 引导加载程序。
这是我遇到了一段时间的问题,我和我的朋友在许多其他人的帮助下找到了这个解决方案。它几乎总能解决问题。
I posted the specific steps on my medium blog. Shared the link below, but the basic steps are as follows
- 清除项目中的 Pyinstaller 文件并重建
- 卸载 Pyinstaller
- 使用编译器构建 Pyinstaller 引导加载程序
- 安装新编译的Pyinstaller
- 用 Pyinstaller 重新构建你的 EXE,确保它没有被标记为病毒
如何解决 Python Pyinstaller 误报木马病毒
我在使用 python 3.8.5 和 pyinstaller 4.5.1
时遇到了同样的问题
在我的例子中,第一个 exe 构建被防病毒软件(Windows Defender)接受,但随后的构建被标记为有木马。
我每次构建可执行文件时都使用 pyinstaller --clean
选项解决了这个问题
我花了数周时间搜索了很多博客。但是我什么也没找到。。
今天找到一个py转exe的方法,没有病毒错误。
所以在这个方法中你不需要发送任何报告..其实很简单。
您需要安装名为 Nuitka.
的模块
python -m pip install nuitka
然后你需要从文件路径打开命令。并使用命令;
python -m nuitka --mingw64 filename.py
仅此而已。
您可以使用命令
nuitka --help
您可以在 - Nuitka Guide
找到更多信息
大约一个月前,我使用 PyInstaller 和 Inno Setup 为我的 Python 3 脚本生成了一个安装程序。我的 AVG Business Edition AntiVirus 刚开始抱怨今天的更新,该程序在用于启动程序的主 .exe 文件中有一个 SCGeneric 特洛伊木马程序(在 PyInstaller 创建的文件夹中,其中包含所有 Python "guts").起初我只是认为这是 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 启动器不被视为木马吗?
感谢任何意见。
我能够将有问题的文件提交到 AVG 的 "Report a false detection" 页面 https://secure.avg.com/submit-sample。我很快就收到了回复(我不记得确切的时间,但不到一天)他们分析了我的文件并确定它没有病毒。他们说他们已经调整了他们的病毒定义,这样它就不会再触发误报了。我更新了我的定义,它仍然在触发,所以我再次联系他们并提供我的病毒定义版本,我听说我的版本不够高——我认为我的定义有一些延迟,因为我从本地服务器。但在一天之内,我得到了正确的定义版本,并且误报不再触发。
因此,如果您对 AVG 有误报,我会推荐此解决方案 - 相当快速且容易地解决问题。
我总是从 VirusTotal 收到一些关于 Pyinstaller 的误报。我就是这样修复它的:
Pyinstaller 带有针对不同操作系统的预编译引导加载程序二进制文件。我建议在你的机器上自己编译它们。确保一切在您的机器上都是一致的。对于 Windows 64 位,安装 Python 64 位。下载 Windows 的 PyInstaller 64 位。确保安装了与您的 Python 相对应的 Visual Studio (VS),检查以下内容:
https://wiki.python.org/moin/WindowsCompilers
在你的机器上用VS编译Pyinstaller的bootloader。它会自动更新 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 安装
从 3.4 恢复到 PyInstaller 3.1.1 解决了我这边的类似问题(至少是暂时的)。
正如@boogie_bullfrog所说,恢复到以前的版本可能是一个解决方案。但是我使用 *.spec 文件来存储一些数据(如图片和图标)。我有最新的 3.5 版本(2019 年 8 月)并移动到 3.1.1 导致编译应用程序时出错(可能是由于支持 Python 3.7)。
所以现在最简单的解决方案是 降级到 3.4
它支持 pyinstaller 3.5 的规范,Windows10 内置防火墙
未检测到 onefile-app我在 Windows 下的 pyinstaller exe 遇到了类似的问题。 Avira 将该文件置于隔离状态,因为它被认为具有潜在危险(由于启发式算法,这意味着某些片段看起来是病毒的典型片段,但实际上并未发现病毒)。
请记住,您自己生成的 exe 文件是独一无二的(因此,Avast 扫描仪通常会 returns 显示一条消息“您找到了一个罕见的文件,我们正在进行快速测试”,并且延迟执行 15 秒以执行更彻底的测试)。
我的解决方案包含以下步骤:
- 我已将 exe 上传到 https://www.virustotal.com/gui/home/upload 以使用许多扫描仪进行检查。如果只有一两个检测到病毒,那你就万无一失了。
- 为了让你的本地病毒扫描器接受该文件,你可以为你的计算机手动接受它,但这并不能解决根本问题,所以在其他计算机上它仍然会被标记为病毒。
- 因此我将该文件报告为误报给 Avira,只需通过电子邮件发送即可。其他扫描仪也有类似的反馈线路。一天之内,我通过电子邮件收到了反馈,说没问题,我电脑上的扫描仪现在也同意这一点。希望这有助于我的 exe 的下一次迭代,以便它保持干净。
这个问题我纠结了两天,终于发现我的应用有问题。问题出在应用程序的图标上。
tkinter 示例:
root.iconbitmap('./icon.ico')
当我去掉这行代码后,误报木马就没有了
此外,确保在将 .py 文件转换为 .exe 时不要使用 --icon
依赖项。否则,这将导致同样的误报木马检测。
我的小文档注册项目代码遇到了同样的问题。
我的临时解决方案是允许 windows defender 和
中的应用程序其他解决方案是使用命令 pyinstaller filename.py
而不是 pyinstaller --onefile filename.py
。
不知道对不对。但这对我有用。
我所做的是解决这个问题(使 exe 文件无法检测为病毒)是通过在 cmd 中键入来降级 pyinstaller:pip install pyinstaller==4.1.0
顺便说一句,它在 3.4.0 上不起作用,所以我只是随机选择了那个版本 (4.1),到目前为止它看起来还不错 :> 我很确定它不仅适用于那个版本,而且我亲身体验过
重新编译,然后手动重新安装 Pyinstaller 引导加载程序。
这是我遇到了一段时间的问题,我和我的朋友在许多其他人的帮助下找到了这个解决方案。它几乎总能解决问题。
I posted the specific steps on my medium blog. Shared the link below, but the basic steps are as follows
- 清除项目中的 Pyinstaller 文件并重建
- 卸载 Pyinstaller
- 使用编译器构建 Pyinstaller 引导加载程序
- 安装新编译的Pyinstaller
- 用 Pyinstaller 重新构建你的 EXE,确保它没有被标记为病毒
如何解决 Python Pyinstaller 误报木马病毒
我在使用 python 3.8.5 和 pyinstaller 4.5.1
时遇到了同样的问题在我的例子中,第一个 exe 构建被防病毒软件(Windows Defender)接受,但随后的构建被标记为有木马。
我每次构建可执行文件时都使用 pyinstaller --clean
选项解决了这个问题
我花了数周时间搜索了很多博客。但是我什么也没找到。。 今天找到一个py转exe的方法,没有病毒错误。
所以在这个方法中你不需要发送任何报告..其实很简单。
您需要安装名为 Nuitka.
的模块python -m pip install nuitka
然后你需要从文件路径打开命令。并使用命令;
python -m nuitka --mingw64 filename.py
仅此而已。
您可以使用命令
nuitka --help
您可以在 - Nuitka Guide
找到更多信息