- ベストアンサー
コピー防止のためレジストリを編集
自分で作成したプログラムを無断でコピーされない方法を探していたら(No.287729 質問:無断コピーを避けるには )という質問がありこの中に「レジストリの中にパスワードを格納してコピーを防止する」という回答がありました。 それでレジストリ関係の書籍3冊ほど読んでみましたが、ほとんどがウィンドウズの細かい設定をかえるものでした。 コピー防止のためのテクニックが載っている書籍やサイトその他なんでもご存知でしたら回答おねがいします。 あとプログラムを逆コンパイル(または逆アセンブル)されるとコピー防止は意味をなさないのでしょうか。 回答よろしく御願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
たぶんレジストリについて書いた本がユーザー向けのマニュアル本ですよね。 Windowsのプログラム開発関係の本にプログラムの設定を保存するための方法としてどこかに必ず書いてあるとおもいますが。C++,VBどなど少し方法は違いますがWindows APIでできます。 方法としては 1. ユーザーが購入時にシリアル番号を発行します。 シリアル番号はたとえば10桁の数字にして頭8桁を 連番にして残り2桁は前8桁の各桁の数値を合計し た数字というようにする(もっともこの決め方を もっと複雑にしないとすぐに見破られます)。 2. プログラムを最初に起動したときに入力させる。 入力されたシリアルが上記条件にあっているかを 確認する。OKならシリアル番号をレジストリに 保存する。このときもともとのシリアル番号を そのまま保存するのではなく暗号化して保存 します。こうれもいろいろありますが数十バイトの データを作成してそこに紛れ込ませるなどです。 ただし、この程度の方法では確信犯には簡単に破ら れてしまいます。 ハードウェアキーを使ったりLANカードのMACアドレスを参照してPCを特定するといった方法が使われます。 私はコピーする人も悪いけど、させる人にも大きな責任があるとおもいます。もし、登録時にシリアルを発行するならシリアルからユーザーが特定できるのでシリアル番号の流出による不正コピーが発覚した場合には本来の使用者にも流出の責任があるので損害賠償を請求しますとの警告を入れておくのも気休めにはなりそうです。 また、シリアル番号のを決める情報としてユーザー名を元にする手もあります。 つまり、シリアル番号のみ手に入れてもその人の名前を入れないとチェックが通らなくするわけです。こうすれば他人の名前を入れる事で違法コピーを意識させることになりますので少しは抑止効果があると思います。また、起動時のタイトル表示に名前を出せばより効果的だと思います。 コピーガードに関してはどこまでやってもいたちごっこだと思いますので、1本の単価が相当高い場合以外はハード的な手段が使いにくいのでこの辺が限界でしょう。
その他の回答 (1)
- marimo_cx
- ベストアンサー率25% (873/3452)
> コピー防止のためのテクニックが載っている書籍やサイトその他なんでもご存知でしたら回答おねがいします。 該当質問の回答No3さんが仰っているように、その方法を開示してしまったらコピー防止できなくなってしまいます。具体的方法は自分で発明してください。 ざっくり簡単に言うならキーのハッシュ値をレジストリに保存しておけば、そのレジストリキーから元のキーは作れないからと言うことなんですがね。 > あとプログラムを逆コンパイル(または逆アセンブル)されるとコピー防止は意味をなさないのでしょうか。 工夫次第です。 絶対破れない暗号というものは存在しないと言うのと同じと思えばいいでしょう。 ちなみに、この難易度を比較的容易に向上させるのがNo.287729にも登場していたハードウエアキーという方法です。
お礼
早速のご返事ありがとうございます。しかしながら回答の専門用語が持っているレジストリの書籍にどれも載っていない(やはり秘密なんでしょうか)ので今の所これ以上コメントできません。今の私の知識でもプログラムソースを見られなければ、コピーされても起動できないようにもできますが、どうも一般的ではないようですので無難に一般的な方法を使おうと書籍を読んだりサイトを見たりしている最中です。
お礼
回答ありがとうございます。今すぐは回答の専門用語がわかりませんのでコメントしかねますが、後日調べてみてポイントを出します。