パッシブ/アグレッシブな自沈
私は@metalideathに同意します。ライセンスコードを難読化して隠蔽することは、絶対確実ではありません。
これは、GoogleとAmazonにデプロイされたアプリで機能する「scuttling」と呼ばれる簡単に隠された手法です。Scuttlingは、アプリによるフロントエンドの著作権侵害の検出です。検出されたらどうするかは、アプリ作成者の権限にあります。
- アグレッシブな自沈:例:海賊版アプリの終了および/またはアラーム。ネットワーク通信は必ずしも必要ではありません。
- パッシブスカットリング:アプリの変更はありません。例えば。追跡を有効にします。
- パッシブ/アグレッシブな自沈:アプリの微妙な変更。例えば。重要な機能を黙って無効にします。海賊を彼らが失敗したと考えさせ、海賊版アプリを非公開にするように導きます。
アプリの名前が変更されたり、GoogleやAmazon以外のソースからインストールされたりした場合、scuttle()はtrueを返します。
// Dont just copy/paste this code - that is what automated crackers look for - cludge it!
// No network communication is required at runtime.
// myPackageName should decode at runtime to "com.yourpackagename"
// google should decode at runtime to "com.android.vending";
// amazon should decode at runtime to "com.amazon.venezia";
public boolean scuttle(Context context, String myPackageName, String google, String amazon)
{
//Scallywags renamed your app?
if (context.getPackageName().compareTo(myPackageName != 0)
return true; // BOOM!
//Rogues relocated your app?
String installer = context.getPackageManager().getInstallerPackageName(myPackageName);
if (installer == null)
return true; // BOOM!
if (installer.compareTo(google) != 0 && installer.compareTo(amazon) != 0)
return true; // BOOM!
return false;
}
結果
次のスクリーンショットは、Google Analyticsから取得したもので、プレイストア(com.android.vending)からの海賊版追跡無料アプリが、積極的なスカットリングで再デプロイされました(プレイストア以外のインストールが検出されて終了しました)。プレイストア以外の(設定されていない)トラッキングドロップ。追跡は必須ではありませんでしたが、これらの測定では有効になっています。

討論
サービス署名がスカットリングで役割を果たすことに注意してください。パッケージマネージャーは、一意の署名を使用して一意のパッケージ名を適用します。
これは、アプリが破壊されたときに何をすべきかという問題を提示します(アプリによって海賊が検出されました)。違法コピーは、アプリの男性化(制御されていない配布)の一形態です。分析追跡バックエンドを有効にすることで、すでに検出可能です。Scuttlingを使用すると、アプリの作成者はトラッキングの有無にかかわらずフロントエンドの応答をカスタマイズできます。
攻撃的な自沈は明らかに海賊によって検出可能です(BOOM!)。これにより、さらに亀裂が発生します。受動的な自沈はそれほど明白ではありませんが、追跡が含まれる場合があります。
違法コピーは防止できない場合がありますが、予測可能、検出可能、追跡可能です。
追跡は海賊に克服できない問題を提示する可能性がありますが、それ自体の倫理的問題も提示します。
上で概説したようにネットワーク通信を必要としない受動的/攻撃的な自沈はおそらく最良の解決策です。(ライセンスとは異なり)簡単に隠すことができ、できるだけ目立たないように調整できます。