2012-05-11 4 views
13

私は非常に大きな問題を抱えています。それは「自分のソフトウェアのライセンスを作成する方法」です。Javaソフトウェアのライセンスを作成するには?

OKが、これは私のライセンスキーであると考えて - 12345YW

ユーザーは、このライセンスキーを入力すると、ソフトウェアは彼がソフトウェアを使用できるようにする必要があります。ユーザーがライセンスキーを入力すると、ソフトウェアは有効なキーを入力したことを記憶する必要があります(次回以降、ライセンスダイアログを表示する必要はありません)。ユーザーがライセンスに入ったことを覚えているソフトウェア? Windowsベースのアプリケーションでは、ほとんどの人がWindowsレジストリへのエントリを入力しています。同じことができますか? (その後、UbuntuとMacはどうですか?)

私はソフトウェアがそれを読んでライセンスが入っているかどうかを調べることができるように.txtファイルを書くことを考えました。しかし、それは私が考えることができる最も安全でないシステムです。

上記のライセンスキーを入力すると、ソフトウェアを覚えてもらうにはどうしたらいいですか? (例:レジストリを編集する方法、Windowsレジストリの場合など)わからない場合は、私にコード例も教えていただけたら本当にうれしく思います。助けてください...

+4

ソフトウェアを「覚えている」ことは簡単です。ハックするのは簡単ではありません... – Mysticial

+0

license4jアプリケーションを使用すると、YouTubeで動画を確認できます –

答えて

18

ライセンスソフトウェアはまだ解決されていません - または、少なくとも安全に、ユーザーに不便を感じさせることなく、主要インフラストラクチャへの投資なしでは解決されません。

ライセンスステータスを格納する場所/メカニズムはほとんど関係がありません - レジストリはテキストファイルよりも安全ではありません。コンテンツにアクセスするには数秒かかりますが、リモートバックウォーターのエントリを「隠す」レジストリの多くは役に立たない。

おそらく、あなたのソフトウェアには何らかの永続性の問題があります(データベースファイルシステム?)。同じ永続性メカニズムを使用して登録ステータスを保存することができます。

もちろん、あなたのソフトウェアが読み書きできるものは、あなたのソフトウェアに不正にアクセスしようとする人がアクセスできます。したがって、レコードを暗号化することができます。その暗号化メカニズムの鍵を管理するという問題があります。 afaik、今、この堅牢なソリューションはありません。

インターネットに「ライセンスサーバー」がある可能性があります。あなたのソフトウェアはあなたのマシンのユニークな識別子を読み取るかもしれません(例:(MAC address)、それをあなたのライセンスサーバに送り、サーバにライセンスステータスを返させてください。繰り返しますが、これは回避するのは簡単ではなく、今ではソフトウェアを使用するためにユーザーがオンラインになっている必要があります。

ソフトウェアがユーザーにとって遠隔的に魅力的であれば、ハッカーは数日でライセンスキーの保護を解除し、詳細な手順をインターネットに投稿します。 AppleはIphone/Ipad上のソフトウェアを保護するために並外れた長さに行きますが、まだ脱獄アプリはそれらをロック解除します。

私の意見では、あなたのソフトウェアが何千万ドルもの収入を得なければ、あなたの人生をできるだけ簡単にし、セキュリティ面についてはあまり心配しないでください。 @bunting recommends)、またはテキストファイルのために解決する。具体的に

、Iだろう:ライセンスファイルが存在しない場合

  • がいることを比較
  • ライセンスキーを入力するようユーザーに求めるアプリケーションの起動時に有効なライセンスファイルの存在のため

    • チェックライセンスキーのキー
    • "有効な"ファイルをファイルシステムのアプリケーションディレクトリに書き込みます。代わりに、既存の設定ファイルを変更してください。

    これは非常に簡単です。あなたは一歩進んで行くことができます。

    第1に、Javaアプリケーションは逆コンパイルが容易で、攻撃者はあなたの「ライセンス」定数を簡単に読み取ることができます。これを困難にするには、難読化ツールを使用する必要があります(不可能ではありません)。

    第2に、ローカルライセンスデータを暗号化することができます。これも完全にカジュアルなハッカーにとってより難しくなります。ハッカーは、ライセンスキーを使用してアプリケーションを再配布するだけでは(たとえば、ライセンスキーにマシンのMACアドレスを掛けて)、暗号化スキームにローカルデータを含めることはできません。

    どちらの場合でも、ライセンスをアプリに「配線」しています。ハッカーがアプリケーションのライセンスキーを投稿する掲示板があり、新しいキーで新しいバージョンのアプリを発行する以外の方法で対応することはできません。

    +3

    さらに、「こんにちは、このソフトウェアを好きなだけ使うことができますが、それが有益であれば、Paypal経由でいくつかの愛を送ってください」というシンプルなポップアップがあります。 – mcfinnigan

    +0

    ええ、@mcfinnigan、それは良いでしょう - 私はそれを不便として数えますが - "nagware"が私のPCから非常に素早く消えてしまいます... –

    +0

    が承認されました。より良いnagwareは一度しか立ちません:)しかし、はい、私はあなたのポイントを参照してください。 – mcfinnigan

    3

    あなたのソフトウェアにライセンスを構築しようとしているようです。手作業ではなく、ライブラリを使用することを検討しましたか?おそらくTrue Licenseを見て、それはあなたが必要なものを行う必要があります。

    +0

    返信をお寄せいただきありがとうございます。本当にありがとうございます。とにかく、これは無料ですか? (「http://truemirror.schlichtherle.de/en/で無料試用期間中に利用可能なTrueMirrorファイル同期アプリケーション」と表示されるため) –

    +0

    ライセンスページを参照してください:http://truelicense.java.net/license .html –

    +0

    ありがとうございます:)私は本当に感謝しています:) –

    6

    私は1つの可能性が見落とされて驚いています。信用できないクライアントからデータを保護する最も簡単な方法は、クライアントに決してそれを持たせないことです。いくつかのアプリケーションアーキテクチャがこれを可能にします:Webアプリケーション、デスクトップクライアントRPCをリモートサーバに、または高性能シンクライアントをリモートサーバ上の仮想デスクトップに接続すること。 Webアプリケーションは、インストール、データバックアップ、メンテナンスの面ですでにメリットがあるため、すでに普及しています。

    だから、むしろ悪クライアント上で、企業のセキュリティポリシーを強制するソフトウェアを作ることによって名誉コンプサイエンスの博士号を取得しようとするよりも...

    (極めてまれ)

    ...あなたは信頼できるサーバーに知的財産を置くだけで、クライアントはユーザーインターフェイス(および非機密ロジック)を持つだけです。この戦略には独自の問題があります。しかし、それはトラックレコードはクライアントコピープロテクションよりも優れています。

    注:ボーナスは、クライアントのソフトウェアを「管理」するために一定の収益を得ることです。

    関連する問題