実行すると肥大化していくバッチファイル


概要

バッチファイルですが、
実行するとバッチファイル自身が肥大化していきます。
実用的なものではなく、遊びです。

Linux上やmacOS上で実行可能なシェル版も作成しました。
本バッチファイルとほぼ同じ設計です。

環境

Windows 10

ソースファイル

「マジック生成」するには、本ページ全体を選択してコピー後にB642FHT.batを起動して下さい。
その後、生成したバッチファイルを任意の場所へ配置して下さい。

コード

bomb.bat
copy /b /y %~dpnx0 + %~dpnx0 %~dpn02
move /y %~dpn02 %~dpnx0 

バイナリ (Base64 encoding)

bomb.bat
---
Y29weSAvYiAveSAlfmRwbngwICsgJX5kcG54MCAlfmRwbjAyDQptb3ZlIC95ICV+
ZHBuMDIgJX5kcG54MCANCg==
---

解説

  • バッチファイルのコマンド行数は2行、ファイルサイズは64 bytesとなっています。
  • 1行目はCOPYコマンドに "/B" オプションを付けて実行しており、
    自身の中身を中間ファイルに2回コピーしています。
    ※元ファイルの名前が "bomb.bat" ならば、中間ファイルは "bomb2" になります。
  • 2行目はMOVEコマンドに "/Y" オプションを付けて実行しており、
    バッチファイルが上書きされます。
  • メカニズムがまだ解っていないのですが、
    2行目のコマンド実行終了後も上書きされたファイル内のコマンドが読み出されてしまうのか、処理が延々と続きます。
  • 64 byteの2倍、4倍、8倍... とサイズが2の累乗に肥大化していき、
    (空き容量があれば)30サイクルで64GBのファイルになります。