1

我正在开发一款游戏,我想加入一些应用内购买。

我决定将购买的物品存储在数据库中并添加一些检查。但是,还有一个问题:难道不能简单的拆解应用程序,交换响应码(例如USER_CANCELED 与OK),所以每次我打开对话并中止时,我的游戏就认为我购买了该物品?

到目前为止,我确实在我的应用程序上尝试过,但是由于我缺乏使用 baksmali 的经验,所以我没有为我工作。从理论上讲,(很容易)可能吗?如果是的话,你究竟要在 smali 中改变什么?有什么对策?

谢谢!

4

3 回答 3

2

Android 有一个 In-app Billing 安全指南文档:

https://developer.android.com/google/play/billing/billing_best_practices.html

这个问题总是会出现,答案是没有“真正的解决方案”可以打败所有的盗版。但是,有多种技术可以缓解问题并大规模防止盗版。

由应用程序开发人员决定他/她愿意在多大程度上限制盗版。通过混淆和服务器端验证和可撤销性的多个版本是很好的技术,不仅如此可能是矫枉过正。传统观点认为,担心有时间和知识破解应用程序实例的少数人可能并不重要。

于 2011-11-03T18:38:59.587 回答
0

如果您反编译、更改代码并将其再次打包为 apk,则需要使用您之前使用的相同密钥对其进行签名 - 否则将无法使用它通过 Play 商店进行应用内购买。

商店中的商品只能由与您通过控制台上传的应用签名类似的应用访问。

但是,如果有人完全更改代码,甚至可以在没有到达商店的情况下模仿该过程。为了防止这种情况,您应该通过后端服务器检查购买的合法性。您可能想检查这个问题以及如何做到这一点的答案。

于 2013-10-10T12:39:03.300 回答
0

只是一个意见:我对android应用程序了解不多,但关于安全范围,您应该决定是否防止破解您的软件或多少。更高的安全性将及时产生更麻烦的应用程序,并导致您的真实客户感觉不好或会偷走他们的时间(因为性能下降)。您将花费时间来保护您的应用程序,而不是让它变得更好、更有用。我建议你也阅读 这个不错的评论。“如果人们希望你的应用程序被破解,他们会的”

于 2011-11-03T12:18:35.620 回答