uttsu.com > N88BASIC >

必殺仕事人

内容

 BASICのプログラムに、実行可能という形態を保ちつつプロテクトをかけます。プロテクト保存よりも強力です。
 「マイコンBASICマガジン2000年6月号に掲載されました。

使用方法

 「必殺仕事人作成プログラム」(mkhsn.bas)を起動し、プロテクトをかけたいプログラムを指定します。あとは、ただリターン・キーを押していくだけで、順を追って目的の処理がなされていきます。

 完了したら、「必殺仕事人」(run.bas)を起動し、先の処理で新しく作成されたファイル(.hsn)を指定すると、そのプログラムが実行されます(ファイル名入力では拡張子は不要)。プログラムが終了するか、またはエラーや[STOP]キーなどにより途中でプログラムの実行が中断されても、リストの内容は守られます。

 友達などに渡す場合は、run.basと、拡張子が.hsnのファイルを渡してください。

入力および使用上の注意

 run.basの行番号は変えないでください。run.basでは、何やらマシン語らしいデータが並んでいますが、じつはマシン語ではありません(詳しくは後述)。しかし、危険度は同じくらい高いので、取り扱いにはくれぐれも注意してください(と言っても、リセットをかける羽目になるくらいですが)。

 また、むやみにプロテクトを解除しようとするとマシンが暴走することがあります。友達などに渡す場合は必ず、プロテクトを解除しようとしないように言ってください。

 当然のことですが、このプログラムの悪用は禁物です。

アルゴリズム

 アルゴリズムを公開してしまってはほとんどプロテクトの意味がありませんが、勉強用に説明します。アルゴリズム的には非常に単純で、BASICのプログラムの格納されているメモリ領域に実行時に直接プログラムを書いていくとその部分もちゃんと実行されることを発見し、それを利用しています。しかし、ラベル等で分岐先が指定されている場合はうまくいかないので、一度すべて行番号に変換し、さらにその時に簡単ですが暗号化しています。あとは実行時に復号化して直接メモリに書き込んでいます。

制限事項

 あくまでもプロテクトに主眼を置いたため、実行するプログラムによってはこの方法と相性が合わず、実行できないものがあります。特に次の場合は正しく実行されません。

 これ以外の場合でも、プログラムによっては相性が合わず、実行できないものがあります。その場合はあきらめてください。


Copyright (C) Takashi Utsunomiya. All Rights Reserved.
2001.04.01掲載, 2001.05.03更新