023 2000/9/22 行儀が良いけど行儀が悪いプログラム

[ 前回 ] [ 次回 ] [ 戻る ]



最近、「マクロウイルスがメールで飛んできた」と隣の席からの声。ExcelVBAのマクロウイルス。ファイルにくっついて増殖タイプで、その他ダメージを与えることは何もしないらしい。特にダメージが出ることはないようではある。ま、増殖するだけでも十分問題か。
しかし、ウイルスを飼っておきながら、何も連絡しない体質はなんとかならんもんかなあ。>社内の某所
外部にも流れていたらしいので、信用なくしても知らないぞ…。

と、ぶつくさ言いながら、自分のExcelファイルのチェックをしている自分がいるわけですけど。自分が携わっているシステムが、Excel+VBAってのもねえ。こんな仕様にしたのは(略)


それで、ウイルスを削除したときに、ExcelVBAのウイルス部分をファイル(*.txt)に取り出してくれたので、読んでみる。

「この分かりやすいプログラムは一体…」

例えば、


プログラムとしては、わずか数十行。それだけでウィルスが書けてしまう。ついでだから、ちょっとやり方を書いてみますか。

  1. このVBA実行時に、Excel関連のレジストリを操作して、マクロチェックを飛ばすようにする。
  2. このプログラムを、Excel実行時に、VBAプロジェクトにloadされるようにする。
  3. 「ファイルを保存する前イベント」が発生したら、この全体のプログラムを保存先に流し込む。
    (ちなみに、流し込んだときに、プロジェクトの重複チェックもやっている。)

たったこれだけ。たった。
ちなみに、このウイルスに引っかかっていると、VBAのプロジェクトにでてくるので、簡単に分かる。

ちなみに、これにちょいと追加して、「Excel起動時に時刻チェックをして、条件に合っていたら、ファイルを削除する」とか、「保存時に保存するファイルをいじって、保存しようとする内容を消したりする」ってのも自由自在。
亜流が簡単にできるわけだな。全く。

それにしても、某外注君とか、某if数千行とかのプログラムに比べると理解度が全然違うプログラム。なんだかやりきれない思いをしたのだった。