2020年10月19日

たったの一文字:$  自作のエクセルマクロが会社のWindows Defender でマルウェア扱いしてきたのだが、ようやく解決した

とにかく、ブロックされるたびに
その検知メッセージを見ながら「きっとこういう処理が検知されるんだろうな」というところを
検知されにくくなるように対処してきた。

###2020・11・1時点、結局は会社でのDefender誤検知は防ぐことができました。
でも自宅でそのマクロを実行すると 検知されブロックされてしまいます。自宅のWindowsのほうが新しいビルドだから?よくわからん。とにかく不毛な鼬ごっこのような気がするので自宅でのDefender誤検知対策は、コードの修正ではなく、ひたすら Microsoftに「これは誤検知だよ」と言い続ける作戦に変更しましtあ。
###

以下の画像はブロックされたタイミングで「自分が作ったマクロなんだから 許可!」とやった後の図です。
(最終的には許可はすべて取り消しました。問題を放置することにつながるので)

2020-10-19_205605.png

2020-10-19_204127.png

2020-10-19_204105.png

それでも、やっぱりブロックされ続ける。
でも、もう想像の範囲内では怪しい処理は書き換えた。直すところが分からない。。。。。

そこで最後に、「いったいどこが検知対象なのか」ということで割り出した結果以下の対応をしたところ、マクロのブロックがぴたりと止まった。
RTrim()関数 を RTrim$() に変えた(1か所)
さらに、この怪しい記述は コメントアウト ' していようがそこにあるだけでブロックされた。
'怪しいAPI宣言なども コメントアウトした文字列が残っているだけでNGである。

理由はわからないが、実際に怪しいマクロではなくても、コメントの有無だけでもブロックされることがあるという事が分かった。

なぜこれが ブロックの対象になったのか全く分からなかった。でも問題の個所はこれさえ直せばこれまでブロックされていた複数のPCでブロックされる事態はすべて解消したのだから、現時点の解決策としてはこれで間違いがない。

いつもマクロのリリース(仕上げ)に
http://cpap.com.br/orlando/VBADecompilerMore.asp
を使っているんだけど、こいつが悪さをしているんじゃないかと疑っていた時もありました。でもこいつは関係がなかった。(このツールは余計なバイナリをそぎ落としてコンパクトサイズにするのに使っています)。
会社のWin10-1909 だと問題ないんだけど、最新の2004だとVBADecompiler.exe ででコンパイルしたモジュールができたとたんに削除されてしまう。やっぱりこいつは危ないみたいだ。



怪しいコードの割り出しをするために以下の方法で行いました。
・VBAのソースコードをすべて出力しておく
・新規のマクロブックを作成し、ソースコードを1ファイルずつ取り込んでは「保存」をする
※ Defenderがブロックするタイミングは、「保存」の時だけです。おそらく VBAを保存したときに内部的なバイナリコードを生成していて、これがサーチ対象になっているっポイ(つまり、動的挙動のサーチではなくて、静的な解析をしてるんだね)。

・ここでブロックされたファイルがあった場合、そのファイルを覚えておき、次のファイルの取り込みをする。最後のファイルのインポートまでを行う。
※ 途中でコンパイルをする必要はありません。あくまで ソースコードの取り込み⇒保存 を繰り返す。

・ブロックされたファイルの 一部だけを取り込み「保存」をします。一部というのは、変数宣言、関数プロパティなど、固まりのある範囲。これらも、コンパイルが正常に行われるかどうかを確認する必要がないのでとにかく、「ブロックされたファイルの上半分」とか、そういうくくりでいいので 内容をくくりだして、マクロを保存してチェックします。
・これによって問題の関数が絞り込めるまで、行います。ファイルを割り出したときと同様、問題のある関数だけ控えておいて、それ以外の関数などは全部マクロへ保存します。


・問題の関数が絞り込めたら、関数の中のステップの一部を保存し、同じように問題の行を割り出します。

・問題の行が分かったら、そこから先は何かひらめくまで試行錯誤します。
 無くてもよいステップか、書き換えはできないか?と自問自答する。
※ 私の場合は Rtrim()を Rtrim$() に書き換えてみるという事で解決するという「発見」をしました。
 そのほかにも、WshShellで Copy,Move,Delete,CreateShortCut などを行うと アウトのようです。まあ、つまりマクロでファイル入出力を行っている痕跡が検知されるとかなりの確率で ブロックですん。

今後どうなるかわかりませんが、現時点のDefender対策として書き留めておきます。
※できるだけ複数のWindowsで検証されることをお勧めします。 悪意のない普通のコードを書いているとしても、お構いなしに理不尽な理由(場所)でブロックされるという事が良くわかりました。(コードそのもののお行儀が悪そうな場所でブロックされるという事は私の観測内では0件でした)

マクロコードの64Bit環境対応もできたし、こっちのめどもついた!!

先輩の家に行ったら『会社員っつーのはオンとオフの切替が必要なんだよ!わかるか!?出勤したらオフ!退勤したらオン!なんだよ!』と言って部屋のミラーボールの電源入れ始めた - Togetter

#マクロブロックされる傾向が一つ分かった#
マクロ付きブック(XLSM)形式で何の問題もなく保存できるものでも
アドイン(XLAM)形式で保存すると、ブロックされることが分かった。
 同じ基準でブロックしてくれよ、、、

・おすすめ楽天ショップ1:trendyimpact楽天市場店
・おすすめサプリショップ:iHerb.com
・おすすめ楽天ショップ2:上海問屋
Powered by さくらのブログ