android - 我为 Android In App Billing 的安全性付出了多少努力?

标签 android security in-app-billing

我在我的 Android 应用程序中实现了应用内结算。我几乎按照示例 (Dungeon) 应用程序来让它工作。到目前为止,它似乎运行良好。我现在需要决定我应该在安全部分投入多少精力。

我确实有一个服务器,我可以用它来实现 Security.java 的东西。我目前也在使用标准的 PurchaseDatabase 实现。

截至目前,我正在考虑使用特定于设备的 key 加密 .db 文件,而单独保留 Security.java。

我的想法是,我的应用程序是一个非常小众的应用程序,我不希望对它进行大量的黑客攻击。如果有人努力节省几美元(购买的每件商品只需 1 美元),那就这样吧。

我想我正在寻找关于其他人对此的看法的意见...似乎没有 100% 安全的实现...只有使黑客不值得付出努力的实现。其他人见过很多应用内购买的黑客行为吗?

最佳答案

您做对了:您不需要实现非常复杂的保护功能,您需要实现需要花费太多时间才能被发现和删除的保护功能这是来自 Google I/O 2011 的视频,介绍了减少“水蛭”:http://www.youtube.com/watch?v=TnSNCXR9fbY ,我彻底推荐它。您可能想尝试的一些技巧是:

  • 使用 LVL;
  • 混淆代码;
  • 在后台线程中随机调用 LVL;
  • 插入与普通代码混合的许可证检查;;
  • CRC码文件;
  • 勤奋:在 JNI 中使用反射来检查签名;
  • 加密核心库/资源并动态加载它们。

其中一些技术非常简单,另一些则需要付出不可忽视的努力。最好的建议是发挥创意,将支票隐藏在破解者不希望看到的地方。

另一个重要的一点是,如果您怀疑盗版,请让您的应用程序优雅地降级。例如,不要抛出“无效许可证”,因为您的许可证检查需要在应用程序启动时访问网络;相反,将“有效期为两个月”的 token 存储在某处并随机更新它。在随机天数(例如,30-60 天范围内的随机整数)后检查它。客户不会注意到此支票,而且很难破解,因为它在很多时间后不会很明显,比破解者愿意花在单个应用程序上的时间要多得多。

关于android - 我为 Android In App Billing 的安全性付出了多少努力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9405257/

相关文章:

android - 如何测试订阅的Google Play实时通知?

android - Xamarin In App Billing 插件无法连接

Android 模拟器键盘表现滑稽

java - 单击时旋转 ImageView 属于 RecyclerView

android - 尝试通过 Google+ 登录按钮进行身份验证时出现 INVALID_KEY 错误

.net - 如何完全序列化/反序列化 RSAParameters 对象

java - 像pinterest这样的Android异构gridview?

java - 可以用 sun.misc.unsafe 破坏安全管理器吗?

macos - 如何在 Mac 上删除对 Visual Studio 的钥匙串(keychain)访问?

Android Billing 4.0.0 - 无购买结果 querySkuDetailsAsync()