いかちソフトウェア

WindowsOSにおけるプログラムのインストーラーに関する
コピープロテクトの簡易的な方法の考察と実践

トップ > テクニック

ソフトウェアのための一般的なコピープロテクト

プログラムのインストーラーに関するコピープロテクトには、代表的なものとして、アクティベーションというものがあります。
アクティベーションに関する詳しい説明はこのページでは行いませんが、詳しい説明は以下のページをご覧ください。

http://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%99%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3

アクティベーションは、正規ライセンスであることを確認するためにネットワーク接続を介して行う方法が一般的ではありますが、ライセンスの管理が少々面倒です。
高額なアプリケーションならば面倒なライセンス管理を行う意味があるでしょうが、小額なアプリケーションの場合はライセンス管理に時間と手間をかけたくはありません。
アクティベーション以外にもコピープロテクトの方法はいくつかありますが、専用ハードを購入するなどとても手軽とはいえないものばかりです。

ファイルの作成日付を利用した簡単なコピープロテクト

そこで、既知のコピープロテクトよりももっと簡単にアプリケーションを不正コピーから守る方法を考えてみました。
WindowsOS限定ではありますが、ファイルの作成日付を利用する方法です。
WindowsOSの場合、1つのファイルには以下の3つのプロパティを持っています。
  • 作成日付
  • 更新日付
  • アクセス日付
WindowsOS上でファイルのコピーを行った場合、新たに作成されたファイルはファイル日付がコピーされた日付に置き換わります。
(更新日付、アクセス日付は変更されません。詳しくは、http://www.ji2.co.jp/forensics/ForensicsAQ/artifact/GA_F011.htmlをご覧ください)
つまり、インストーラー内にインストールに必要なあるファイルの作成日付を記録しておき、実際のファイルの作成日付と合致する場合のみインストーラーを実行する方法です。
この方法を利用すれば、インストーラーがコピーされて何度も使用されてしまうといったことを防ぐことができます。
もちろん、ファイルの作成日付はツールを使って書き換えたりすることも可能ですので、当該ファイルを隠しファイルにしたり階層の深いフォルダに配置するなどの工夫をすることも必要です。

配布用媒体について

このコピープロテクトのデメリットとして、インストーラーをネット上からのダウンロード方式で配布できないことがあげられます。
また、インストール用の媒体としてCD-ROMを使用することもできません。
インストール実行後、すでにインストール済みの媒体であることを特定のファイルに書き込むためです。
そうすると、インストール用の媒体はUSBメモリなどの書き込み可能媒体に限られてしまいます。
もっとも、最近ではUSBメモリの値段も非常に安くなってきていますので、CD-ROMのかわりにUSBメモリをインストール媒体として配布することはそれほど大きな問題ではないでしょう。

ファイルの作成日付を利用したコピープロテクトのサンプルコード

さて、実際のコピープロテクトのサンプルコードはこちらです。

コピープロテクトのサンプルコードをダウンロード

サンプルコードは、VB6とVBSで書かれています。
インストール済みかどうかの記録には、mdbファイルを使用します。
mdbファイルの拡張子はkeyに変更してあり、パスワードをかけています。
また、このサンプルコードでは、インストール実行後にインストーラの削除も行っています。
インストール済みであることをファイルに書き込むのであれば、わざわざインストーラーを削除する必要はないのですが、一応こういうこともできますということで:-)
インストーラの削除は、VBSで行っています。
(拡張子がuseとなっているファイルがvbsファイルです)
後は、サンプルコードをおってください。

ご意見やご質問があれば、いかちソフトウェアまでメールにてご連絡ください。