0

我不明白 Google 的 Licensing Service 的概念

场景:用户 A 在设备 X 上购买了一个应用程序,然后用户 A 通过他的另一台设备 Y 访问 Android 市场来安装该应用程序,并且由于他在两台设备上使用相同的帐户,因此无需再次付费。

该应用程序发出许可证检查请求,其中包括设备特定数据或安装期间生成并存储在设备上的随机数据。

据我了解,设备 X 和 Y 上的额外数据会有所不同,因此同一用户和应用程序的许可证检查请求不同,但仍被认为是有效的。

因此,在从 Android 市场下载期间,额外的请求数据是否也会存储在每个用户/应用程序/设备的许可服务器上?

用户 A 无法将应用程序从设备 X 复制到设备 Y,许可证检查将失败,因为该设备或安装特定数据仅在从 Android 市场安装应用程序时存储在服务器上?

4

1 回答 1

0

某些信息保存在本地。例如:ServerManagedPolicy将上次响应、有效性时间戳、重试直到、最大重试次数和重试次数保存为本地设备数据。

特别是由于 Last Response 存储在本地,因此鼓励您混淆本地数据(否则恶意用户可以输入他们自己的本地数据,表明许可证有效),并且AESObfuscator该类提供为:

使用 AES 加密数据的混淆器。

当您构建 时AESObfuscator,您提供一个byte[] salt, String applicationId, String deviceId. 的PBEKeySpec密码基于applicationIdand deviceId(您可以在提供的源代码中看到)。

中的注释表明您可以提供的com.example.android.market.licensing.MainActivity不仅仅是. 您需要确保它的安全程度取决于您的判断 - 它可以像在您的应用程序或其他密码方案中硬编码一个值一样简单(其讨论可能更适合密码论坛)。Secure.ANDROID_IDdeviceId(new String(byte[]{(byte) 75, (byte) 12}) + Secure.ANDROID_ID)

于 2011-09-02T19:53:42.193 回答