自分自身を変更するプログラム

プログラムを8000番地から読み込ませるようにして、とかできれば簡単なんだけどな。
プログラム内でスタティックな変数を定義し、そのアドレスから上にたどっていけば、実行処理部分のアドレスがゲットできる?
コンパイルすると、処理部分、スタティックな変数という順で並ぶはず。
スタティック変数で文字列を定義し、そこからアドレスを取ればなんとかなる?
あとはメモリ上のデータを書き換え、自分自身の実行ファイルをデータをメモリ上から引っ張ってきて別のファイルとして書き込めれば。
どっちにしても、Cの開発環境がない・・・。