我在Android In App Billing的安全性方面投入了多少精力?

时间:2012-02-23 00:08:25

标签: android security in-app-billing

我在Android应用程序中实现了In app Billing。我几乎遵循示例(Dungeon)应用程序来使其工作。它现在似乎运作良好。我现在需要决定应该在安全部分投入多少精力。

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

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

我的想法是我的应用程序是一个非常小众的应用程序,我并不期待它有很多黑客攻击。如果有些人付出了努力来节省一些钱(每件商品只需1美元),那就这样吧。

我想我正在寻找关于其他人对此的看法的意见......似乎没有100%安全的实施......只是使黑客不值得努力的实施。还有其他人看过很多In App Purchases的黑客攻击吗?

1 个答案:

答案 0 :(得分:2)

你做得对:你不需要实现非常复杂的保护功能,你需要实现需要花费太多时间才能找到并删除的保护功能以下是来自Google I / O 2011的关于减少技术的视频“ leechers“:http://www.youtube.com/watch?v=TnSNCXR9fbY,我完全推荐它。您可能想要尝试的一些技巧是:

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

其中一些技术非常简单,其他技术需要不可忽略的努力。最好的建议是要有创意,隐藏检查员不要指望他们的检查。

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