« 眠い、、、 | 自己複製プログラム | フルーツタルト »

Sun April 2,2006

自己複製プログラム

Security in Networked Systemの宿題でちょっとおもしろい物があったので紹介します。
プログラムを書かない人には意味不明かもしれません(^^;

お題その1
実行したときに自分と同じ実行ファイルを生成するプログラムを書きなさい
もちろんファイルネームは変わっても良い

お題その2
その1の実行ファイルを改良して、複製を生成するときに暗号化を行って機能は同じだがファイルの内容は異なるようにする仕組みを追加しなさい


その1は非常にシンプルなワームを書けと言ってるのと同じです。
このプログラムに脆弱性を攻撃する部分を書けば立派なワームのできあがり。

その2はシグニチャを分析されにくくしてアンチウィルスに検出されにくくなるように改良(?)しなさいということです。

なんだかこの授業、セキュリティを勉強してるはずなのに、攻撃法を勉強してることの方が多いような気がします(^^;

その1はプログラム的に考えると結構面白いです。
思考実験として、自身のソースコードを表示するプログラムを考えてみます。
とりあえずコードの細かい部分は無視ということで
printf(")がソースだとすると

printf("printf("")");

となれば良いのですが、この時点でソースはprintf("printf("")");となります。
ということは

printf("printf("printf("")")");

と書く必要があります。この方式だと永久に入れ子構造が続くのでどうしようもありません。
という訳でひねりが必要になります。

続きは宿題をやってから(^^;
なんとなくアイディアはあるもののまだきちんと動くか確認していないので
興味のある方は自分でもやってみてください。Perlならそれなりに簡単に書けると思います。
私はできればCで書きたいのですが、出来るかなぁ。

Posted at 21:00

Trackback Pings

このエントリーのトラックバックURL:
http://pam-ya.com/cgi/mt/mt-tb.cgi/1362

このリストは、次のエントリーを参照しています: 自己複製プログラム:

» テスト w/平田大先生 w/ QRMail from w/, w/o ANNEX
携帯からの投稿テスト。 平田さんのサイトを利用させてもらい、携帯から投稿できるよ... [続きを読む]

TrackBack at: April 7, 2006 3:43 PM