【问题标题】:Encrypt Android Setting加密安卓设置
【发布时间】:2011-07-10 01:15:30
【问题描述】:

对于我的 Android 应用程序,我想免费发布它,但带有广告。然后,我想为用户提供一个选项,以使用 PayPal 库以象征性费用删除广告。这样一来,我就不必拥有必须监控、开发等的 2 个独立版本的应用程序。

无论如何,在用户付钱给我删除广告后,我需要安全地存储一些表明他们付费的东西,这样就不容易欺骗我的应用。我该怎么做?我正在考虑加密一个字符串并将该加密值存储在 SharedPreferences 中。这是一个可行的选择吗?如果有人从他们的设备上取下 apk 并将其提供给其他人,SharedPreferences 会随之移动,还是保存在 apk 之外?如果有人有root访问权限怎么办?他们可以欺骗 SharedPreferences 吗?

如果可能,我希望避免每次启动应用程序时都查询服务器。

谢谢!

【问题讨论】:

    标签: android encryption paypal


    【解决方案1】:

    我会争论几点:

    1. 将您的应用程序重构为免费的、广告支持的版本和付费版本。你可以打包一些东西,这样你就可以共享应用程序的几乎每一个部分。然后在市场上发布免费和付费版本。

    2. 任何愿意解决您的版权保护问题的人无论如何都不会为您的应用付费。

    3. 您提供的是价值主张。如果将免费版和付费版分开的唯一因素是广告,那么您的应用最好成为用户离不开的东西。如果您打算用更多功能扩展付费版本,那么上面的 #1 可能是一个更好的主意。

    【讨论】:

      【解决方案2】:

      您可以做的是在您的应用中从手机中获取一些唯一数据(设备 ID、应用版本...等...)并将其组合成一条消息。

      然后使用公钥/私钥对。公共部分可以在您的应用中,也可以在您随身携带的私人部分中。

      当用户为您的应用付款时,它会向您发送带有设备 ID 等的字符串,当您收到付款时,您会发回包含证书的数据块。

      您的应用可以根据设备 ID 或您决定使用公钥放入其中的任何内容来验证证书。

      还有很多细节需要解决(数据是如何来回发送的……等等……),但是有了这些工具,你应该能够实现你想要的正在寻找。

      您可以在这里查看如何管理证书:http://developer.android.com/reference/java/security/cert/package-summary.html

      当然,您想变得多复杂取决于您的应用程序以及需要支付多少费用。逆向工程绕过所有这些当然是可能的,但我怀疑如果他们只需要支付 0.99 美元就可以摆脱广告,很多人会遇到麻烦。

      【讨论】:

        【解决方案3】:

        如果用户有足够的决心,他们将能够对您的应用进行逆向工程并获得解密密钥,或者完全修补您的保护。 SharedPreferences 存储在任何人都可以访问的文件中(好吧,也许任何人都可以访问...)。

        总而言之,省去你自己的努力,甚至不要试图保护你的应用程序......谁会逆向工程你的应用程序只是为了摆脱广告?

        【讨论】:

        • 你打败了我。 “放弃”是我的建议。如果您在这里寻求帮助,那么您设计的任何系统都将在几分钟内被破解。如果您在线检查,他们将取消检查。如果您在代码中加密某些内容,他们将对其进行解密。以此类推。
        【解决方案4】:

        您现在可能想略过复杂的保护措施,等到应用内购买到来。我想那时会有一个安全、可靠的解决方案。

        【讨论】:

          猜你喜欢
          • 2011-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多