7

ユーザーがライセンスを購入してアクティブ化する必要があるソフトウェアアプリケーションを作成しています。コード生成と、もちろんコードチェックのための強力なアルゴリズムの作成を開始する方法についての提案が必要です。人々がコードをリバースエンジニアリングしてkeygenを作成できることは知っていますが、私の質問は2つの部分です。

  1. 一般に、このようにアプリケーションがクラックされているかどうかに関係なく、特定のシリアルまたは文字列、あるいはその組み合わせを受け入れるアルゴリズムの作成を開始するにはどうすればよいですか。(たとえば、それは正しいことですか?たとえば、最初の数字は3〜9で、2番目の数字は最初の-3で、3番目の数字は2番目の数字である必要があります* + .... whatever ... ??)

  2. インターネットを使用せずにデスクトップアプリケーションを著作権侵害から保護するための最良のアプローチは何ですか。それはアルゴリズム(リバースエンジニアリングを困難にする)であり、アプリケーションがどこかにインストールされた後にソースコードが表示されないように保護しますか?... ??

PS:開発言語としてJavaを使用していることは言及する価値があるかもしれません。ありがとう

4

6 に答える 6

2
  1. 公開鍵暗号化アプローチの恩恵を受ける可能性があるようです。

  2. これは、2つのサブポイントに分けることができます。

    • A.このスレッドをSOで読んだことがありますか?それはあなたに問題についていくらかの幅を与えるかもしれません。
    • B. @Jakaが言ったように、Javaバイトコードから人間が読めるコードを生成することは(私が読んだことから)大きな挑戦ではありません。難読化ツールを使用してコードを実行すると、誰かがコードから人間が読めるコードを作成するのが難しくなりますが、誰かが本当にコードを読みたい場合は、ほとんどの場合、方法を見つけることができます。これに対抗するための最善のアプローチは、私がリンクしたSOスレッドのアドバイスを利用することです。誰かがアプリを盗むよりも、誰かがアプリを購入しやすくすることです。

(彼がJavaを使用していると述べた後に編集)

于 2010-08-01T20:47:20.577 に答える
1

ライセンスキーには、公開鍵と秘密鍵による暗号化を使用できます。このようにして、秘密鍵をソフトウェアに埋め込み、ソフトウェアにとって何かを意味する文字列を暗号化することができます(ソフトウェアのどの機能がライセンスされているかなど)。または、公開鍵を埋め込み、ソフトウェアに特別な意味を持つ文字列を与えて、秘密鍵で署名することもできます。その後、ソフトウェアは署名が有効かどうかを確認できます。

編集: labratmattは公開鍵と秘密鍵の回答で高速でした:)

明らかに、保護の2番目の部分は、ソフトウェアの逆アセンブルとデバッグを困難にすることに対処する必要があります(これは、クラッカーがソフトウェアを調べてパッチで保護をバイパスしようとする方法、またはkeygenを作成する方法を見つけようとする方法です)。この部分は実際にははるかに難しく、実行可能ファイル全体を暗号化し、実行時に復号化するローダー内にラップするなどの手法が含まれます。ローダーは、さまざまな手法を使用してデバッガーの存在を検出することもできます。

編集:アプリケーションはJAVAで記述されているとおっしゃっていましたが、JAVAは人間が読める形式に簡単に逆コンパイルできるため、この暗号化とパッキングの手順はさらに重要です。逆コンパイラが読み取り可能なコードを生成できないようにクラスをいじくり回す「難読化」プログラムがありますが、これをクラックすることは、マシンコードにコンパイルされたものをクラックするよりもはるかに簡単です。

独自の保護の開発に時間を費やしたくない場合は、商用保護ソフトウェアの1つを使用することもできます。選択できるものは非常に多く、多数の保護スキーム(ドングル、時間ベースのライセンスなど)を提供します。

多くの商用ソフトウェアは、FlexNet、HASP、Wibu-keyなどのパッケージを使用しています

于 2010-08-01T21:04:47.280 に答える
0

提案:ライセンスのみの機能を提供するアプリケーションの部分を暗号化します。ユーザーは、コードのその部分を使用するために、購入時に提供するキーを必要とします。

購入する前にユーザーに保護したいコードを実行させる場合、安全性の高いオフラインソリューションはありません。せいぜい、あなたは最もカジュアルな著作権侵害を止めることができます。

于 2010-08-01T21:02:18.503 に答える
0

また、1つのキーを2台の異なるコンピューターで使用できないようにすることも検討する必要があります。会社が1つのキーを購入し、それを多くのインストールに使用するのを防ぐためです。

于 2010-08-01T21:20:21.673 に答える
0

あなたもあなた自身のJREを書きましたか?遭遇するさまざまなユーザーシナリオ(ネットワーク接続がない人、ファイアウォール、プロキシサーバーなど)にスムーズに対応し、現場で徹底的にテストされた安全で有能なアクティベーションシステムを構築するには、かなりの専門知識と時間がかかります。

そのようなシステムのサプライヤーとして、私たちは宣言する自己利益を持っていますが、データもあります-ライセンスシステムをまとめることができると言っている開発者に信頼を置いている多くの企業があり、後で彼らは私たちに戻ってきます彼らが必要なことを決してしなかったので。この記事(私の)は、問題について詳しく説明しています:http: //knol.google.com/k/dominic-haigh/issues-to-consider-before-building-your/2zijsseqiutxo/6#

于 2010-08-02T21:23:50.043 に答える
0

https://superuser.com/questions/14224/how-to-explain-drm-cannot-work/14254#14254

ソフトウェアに非常に強力なロックをかけたとしても、海賊はそれを解読してトレントサイトに置く方法を見つけるでしょう。(適切な例:胞子)

あなたはDRMについて話しているのですが、海賊がソフトウェアを海賊行為するのを防ぐ簡単な方法はありません。その上、あなたはあなたのソフトウェアがすることをすることができる無料の製品と競争しているので(常にそうです)、あなたはあなたのソフトウェアをあなたが意図した以上にインストールして使うのが難しいのではなく、インストールして使うのを簡単にすることにもっと集中するべきです。

于 2010-08-02T22:19:17.253 に答える