背景
- Pythonでデスクトップアプリを作成することがあり、exe化にpyinstallerを使用
- pyinstallerコマンド(
pyinstaller hoge.py
)でexe化したときに、windows defenderのセキュリティでウイルスが検知された- Trojan:Win64/Malgent!MSRというトロイの木馬1区分のチェックに引っかかった
- pyinstallerを使った場合、windows defenderに引っかかることはよくあることらしい
要因
-
pip install pyinstaller
を実施するとコンパイル済みのBootloaderがインストールされる- pyinstallerコマンドでexe化するときに使うファイル
- このファイルが要因でウイルス検知されるとのこと
対応:bootloaderを再構築する
① pyinstallerを任意のフォルダにcloneする
- bootloaderを再構築するには、pyinstallerリポジトリをcloneする必要がある
git clone https://github.com/pyinstaller/pyinstaller.git
② bootloaderを再構築
- bootloaderに移動して、環境をクリーンにする
cd pyinstaller/bootloader
python ./waf distclean all
コンパイラ(ex.MinGW、MinGW-w64)が必要です。
ここでエラーが発生する場合は、コンパイラをインストールしてください。
③ wheelのインストール
- bootloaderを再構築したpyinstallerをインストールするために、wheelをインストールする
pip install wheel
④ pyinstallerをインストール
- pyinstallerフォルダ下に移動して、再構築したpyinstallerをインストールする
cd pyinstaller
pip install .
あとは従来と同様にpyinstallerコマンドを実行すれば、windows defenderに引っかからずにexe化できます。
参考資料
- PyInstaller Manual
- PyInstallerで作ったexeがウィルス判定される
- 【Pyinstaller】誤検知を回避する
- [Python] Pyinstallerで実行ファイルがマルウェアに分類されてしまったときの対策
- PyInstallerで実行ファイルを作ったらSymantecに叱られる件
- Program made with Pyinstaller now seen as a Trojan Horse by AVG
- wheel
-
有用なプログラムに見せかけて、裏で不正な処理を行うもの ↩