GoのWailsで書いているアプリでM1 MacBook AirからWindows向けのバイナリをクロスコンパイルした際の起きたことメモ。
作成したWindowsバイナリを実際にWindowsマシン上で実行しようとしたらMicrosoftのWindows Defenderから Trojan Wacatac.H!ml
として検知されてしまった。
(ちなみに Trojan Wacatac.H!ml
の正式な文字列はメモを取っていなかった...もしかしたら Trojan:Win32/Wacatac.H!ml
とかそんな文字列だったかもしれない)
クロスコンパイル時の環境
- M1 MacBook Air (macOS Monterey 12.6.1)
- Goのversionは
go version go1.19.2 darwin/arm64
- Wailsのversionは
v2.1.0
M1 macから M1以降のmacとWindows(amd)向けのバイナリを作成したくて下記のようなコマンドを実行した。
(ちなみに -clean
オプションはビルド後のディレクトリをきれいにしてからビルドするオプション)
wails build -clean -platform=darwin/arm64,windows/amd64
このようにして生成したバイナリをWindows側に持っていき実行しようとしたら誤検知されたという形となる。
Windows環境でコンパイルすることでご検知は回避できる
この問題だが、Windows環境でそのまま以下のコマンドを用いてバイナリを作成した場合は誤検知されない。
つまりmacからのクロスコンパイル時にのみ発生するようだ。
wails build -clean
似たような事案
Go言語で作成したプログラムがWindows Defenderに「Wacatac!ml」と誤検知される件と回避方法
という記事を見つけたが、ここで書かれている内容と同じだと考えている。
こちらの方はソースコードレベルでの回避に成功しているようだが、私の方ではまだここまでの回避には至っていない。