2017-03-29 13 views
1

いくつかのコードを開発し、それらをいくつかの共有ライブラリ(Android OSの* .so)にパックします。私はそれらをいくつかのベンダーに分かち合いたいと思いますが、これらのライブラリを1つ以上のAndroidデバイスでのみ使用できるようにしたいと考えています。 デバイス固有のIDを取得しようとしましたが、正当なIDかどうかはチェックされていますが、一意のデバイスを表すIDはなく、デバイスが再フラッシュされても変更できません。私は、x86ベースのWindowsシステムの下にCPUIDがあることは知っていますが、アームベースのAndroidデバイスでは似ていません。また、Linuxのセキュリティ機構のために、私はフラッシュIDのためのMACのような何かをrootのないユーザー空間から得ることができません。バイナリコード(共有ライブラリ)を違法使用から保護する方法はありますか?

これを達成する方法はありますか?あなたのアドバイスを楽しみにしています。ありがとう。

+0

はい、それは「知的財産法」と呼ばれます –

+0

絶対に理想的です... – Adagio1983

答えて

0

これを実行しようとしても、誰かがあなたのライブラリを逆コンパイルして、これらの対策を元に戻すことができます。あなたがそれを避ける方法はありません。

これが問題でない場合は、デバイスのIMEIを取得できます。欠点は、1つではない可能性があるということです(3Gなしのタブレットである可能性が高い場合が多い)。これも面白い読まれるGetting MAC address in Android 6.0

How to get the device's IMEI/ESN programmatically in android?

あなたはMACアドレスを取得したい場合は、(まだ、それが動作することを保証し、プラス偽装することは容易ではありません)、これを試すことができます:ここではどのようにありますこれらの方法のほとんどは、リセットされたデバイスを一意に識別しない可能性があります。https://developer.android.com/training/articles/user-data-ids.html

+0

私は心配しません誰かが私のバイナリコードを元に戻すだろうが、あなたが示したIMEIやその他のIDは、ユニークで簡単なものではない。 – Adagio1983

+0

私はこれらよりユニークなものがあるとは思わない。私の経験から、MACアドレスの変更は単純ではありません(ネットワークに接続する予定がないか、開いているネットワークを使用していない限り、Linuxほどシンプルではありません)。別の方法は、最初の実行時にデバイスのランダムIDを生成することですが、ユーザーがデータを消去した場合はリセットされます。他のメカニズム(セッションCookieを使用し、ユーザーごとに1つのセッションしか許可しない - ただし、他のデバイスに簡単にコピーすることができます)を作成する場合を除き、最良のソリューションはAndroidデバイスIDを使用している可能性があります。 – jackgu1988

関連する問題