Help us understand the problem. What is going on with this article?

MSXでコンピュータウィルスを作った時の話

More than 3 years have passed since last update.

この記事は25年ほど前にMSXユーザーだった私が、MSX Advent Calendar 2015の15日目の記事として書いたものです。
ほぼ昔話的な内容ですみません。

MSXとの関わり

1990年頃にSONY製のMSX2+、HB-F1XVが家に来たのが始まりです(それまではPC-8801が家にあった)。最初はMSX FANの一画面プログラムを入力する程度でしたが、ほぼDATA文(=マシン語)なプログラムに衝撃を受けたのをきっかけに「Z80マシン語秘伝の書」でアセンブラを学び、バックアップ活用テクニックを愛読するような小学生でした。

近年はほぼMSXとの関わりはありませんでしたが、Yusuke Andoさんの下記のつぶやきを見かけて、いい機会と思い筆をとった次第です。

何を作ったの?

感染したフロッピーディスクを起動時にフロッピーディスクドライブに挿入しておくことでシステムに常駐、その後感染していないフロッピーディスクが挿入された時にそこに自己を複製し、特定の日付に起動された場合のみメッセージを表示するというコンピュータウィルスを作成しました。

なんでそんなもの作ったの?

当時購読していたMSXマガジンのコラムに載っていた、世界初のコンピュータウィルスの話に触発されてだった記憶があります。
(MSXマガジンにはよくSFやコンピュータの歴史を語ったコラムが載っていた)

動作原理

(記憶ベースで書いているので、少々アバウトです)

  1. 本体はフロッピーディスクのブートセクターに存在し、200バイト程度のアセンブラで書かれている。
  2. 起動されるとRTCにアクセスし、日付を取得する。
  3. 日付が特定のものだった場合、永久ループでメッセージを表示する。
  4. 日付が特定のものでなかった場合、常駐するためにHIMEMを一定量(ブートセクター + バッファ)マイナスし、空いた領域に自分をコピーする
  5. ディスク入力をフックし、ブートセクターをバッファに読み込んで感染していなかった場合のみ自分をブートセクターに書き込むルーチンを仕込む
  6. 何事もなかったようにMSX-BASICを起動する

欠点

  • (当たり前ですが)感染したフロッピーディスクから起動しないといけない
  • MSX-BASIC起動時のプロンプトで表示される空きメモリ量が通常と変わるので、勘のいい人には異常を察知できる

オチ

さて、ウィルスを作ったはいいのですが、実は当時僕のまわりにはMSXを持った友人がほぼおらず(泣)、感染を拡大させる経路がありませんでした…。その後、中学でMSXを持った友人と出会うことになるのですが、隙を見て彼のマシンを感染させるべくディスクをガッチャンガッチャンやっていたところ、本人にバレてぶん殴られ、計画は失敗に終わったのでした。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした