web-dev-qa-db-ja.com

Javaアプリケーションをコピー保護するにはどうすればよいですか?

Java Paypalを使用したアプリケーションを販売したい。支払いが受領されると、顧客は私のアプリケーションへの1回限りのダウンロードリンクを郵送される。

私の質問は、人々が.jarファイルを友達に送信したり、インターネットでアップロードしたりできないようにするにはどうすればよいですか?

明らかに、私はそれを1台のコンピューターで実行することのみを許可するアプリケーションで、ある種のチェックが必要です。これは別の問題です。お客様が1台のコンピューターに制限を設けたくないので、自宅で実行して仕事ができるようにする必要があります。

たぶん、ある種のCDキーでうまくいくのでしょうか? Javaのcd-keyリソースはありますか?または、独自のアルゴリズムを構築する必要がありますか?ここで、リバースエンジニアリングというもう1つの問題が発生します。

これを解決するのを手伝ってください:)

30
cragiz

これを処理する最も一般的な方法は、顧客がお金を提供し、一意のロック解除キーを生成して顧客に提供することです。キーは有効なロック解除キーである必要があり、ユーザーに関する識別情報をエンコードする必要があります。顧客はそのキーを使用して、好きなだけコンピューターにインストールするか、ライセンスで許可されています。

リバースエンジニアリングについて心配する必要はありません。あなたの製品は、それがまったく人気がある場合、海賊版になります-十分に注意すると、オンラインでロック解除キーを見つけることができます。お望みなら、あなたはそれを褒め言葉として受け取ることができます-誰かがあなたのソフトウェアを盗むほど十分に好きだったのです。寒さは快適だと思いますが、代わりに海賊との武装競争に参加することもできます。結局のところ、人口の数パーセントがソフトウェアを盗むことになり、あなたはそれについて多くをすることはできません。あなたはcanスキームの強度が十分であれば、キーの識別情報を使用して、最初に誰がキーをリリースしたかを追跡します。

30

実際に役立ついくつかのライセンス管理ソリューションがありますが、実際の問題はそれらすべてが解読される可能性があることです。私は個人的に最も高価なものから最も安いものまで試しました。最後に自分でロールバックし、ソフトウェアが実行されるたびに、サーバーに記録された詳細に対してソフトウェアのPCの詳細(Mac IDなど)をチェックします。私のソフトウェアはインターネットに緊密に結びついているので、それは大丈夫ですが、最近の1つでクラックされると確信しています。

おそらく必要なのは、インターネットを定期的に監視し、ソフトウェアが海賊版にされている場所を見つけることです。これは、ほとんどの場合、実際に阻止できるという一般的な考えに反しています。ダウンロードするWebサイトにDMCAを提供するだけで(ほとんどは準拠します)、ケースの約80%でソフトウェアを削除できます。私は自分のソフトウェアでそれを実行して体験しました。一部の人は削除しませんが、これを行っている1.5年の間に、私の売り上げは向上しました。

私もサービスを使用します http://spotpiracy.com これは、自分の手動調査とは別にこれらのリンクを見つけるのに役立ちます(私はこれに専念している人がいます)。 :)

9
Cyril Gupta

誰もがこの問題について自分の意見を持っているので、さまざまなアドバイスをたくさん期待してください。これが私の見解です。

  • 1.コードを難読化する(プロガードを推奨)
  • 2.試用期間中、フル機能を備えた無料バージョンを提供します
  • 3.登録ユーザーの電子メールまたはその他の固有の情報に基づいて、シリアル番号ルーチンを使用します

全体として、ある程度の著作権侵害を受け入れる必要がありますが、アプリケーションに価値がある場合は、人々がそれを支払うことになります。正直な人々は正直であり、コピープロテクションは不正直な人々を正直にすることはありません。

4
Paul Gregoire

私の意見では、ソースコードを効率的に保護する方法が正確にわからない場合は、ハードウェアに基づいて自分で何かを一緒にハッシュしようとしないでください。それは簡単に壊れてしまい、おそらくあなたの顧客を苛立たせます。

アトラシアンがこれをどのように行っているかをご覧になることをお勧めします。彼らはたまたまJavaソフトウェアを販売しており、明らかに非常にうまく機能しています。 http://www.atlassian.com/ たとえば、JIRAをダウンロードして、インストールで遊んでみてください。これはライセンススキームがどのように機能するか、およびユーザーがプロフェッショナルソフトウェアに合理的に期待できるものについての良いアイデアを提供します。

ライセンス機能を実装する必要があります。

スターターとして興味深いリソースは次のとおりです: http://members.chello.at/stefan-schneider/JavaLicenseKit.html

2
user333306

私の昔のc ++の時代には、MACアドレスコード保護を使用して海賊行為に立ち向かう準備ができています。Macオーバーライドを回避して、常にOSに本物のMacを再読み込みするよう強制するため、MACアドレス保護を上回ってソフトウェアを盗みました。これは、ローカルリソースに直接アクセスできるC++コーディングに関するものでした。

今日はそうではありません。Javaアプリケーションでは、コードは.classファイルにあり、常に元のソースコードにデコードして戻すことができます(そうすることは可能で、非常に簡単です)そうするためのツールを見つけてください)。

私は再開として、Javaプログラムは著作権侵害を保護することは不可能だと思います。私は古い黄金のc ++日のような方法を見つけることができません:)

1
christian