我发现许多用户使用所谓的"IAP饼干“,而不是在应用内购买(IAP)中购买商品。我还了解到,Zynga Poker和Pokerist已经检测到IAP破解程序并阻止伪造的IAP。我想要检测哪部手机正在使用IAP cracker。对于Cydia黑客工具,我可以通过应用程序路径找到它。
但我不相信iAP破解程序会落入特定的应用程序中。我想我可以通过调用"Url Scheme“来验证这一点,但我不知道它的名字。有谁知道怎么做吗?
发布于 2011-09-21 06:49:46
目前最好的解决方案似乎是使用外部服务器验证IAP交易,然后发回某种特定于设备的密钥,以解锁只能在该服务器上生成的付费项目。这不是无懈可击的,但它应该使你的应用程序高度抵抗任何通用的IAP破解系统;想要破解你的应用程序的人几乎必须专门为它开发一个破解程序。(这要复杂得多,远远超出了大多数使用IAP Cracker的人的能力范围)
这是你基本上需要做的:
(请参阅下面编辑后的文本,以了解您现在需要在步骤3中执行的一些额外验证)
在你的例子中,由于你的应用程序已经被破解,你试图停用那些非法获得你的IAP项目的人,你应该在你的应用程序的一个新版本中推送这个功能,然后在新版本第一次运行时调用一个restoreCompletedTransactions来重新验证/重新激活合法用户的购买,并阻止其他所有人。
然而,我应该补充的是,这是一个LOT的工作-我们花了几个星期的程序员时间让它顺利运行,尽管现在到处都是开放源码,可以为你处理步骤2和3的大部分。重新激活的步骤也会带来支持和公关成本--不可避免地,一些人会更换iTunes账户,或者没有互联网连接,或者诸如此类的事情,他们甚至可能会因为暂时无法访问他们合法支付的东西而感到非常恼火。
你需要权衡是否真的值得在这上面投入时间,因为破解只对越狱用户可用(所以大约90%的潜在客户没有受到影响),而且大多数安装它的人不太可能为你的应用程序付费;不要被破解你的应用程序的用户数量吓倒,许多人会很高兴地免费下载一些东西,即使他们永远不会付费。你最好把时间花在改进上,让合法用户受益(并鼓励更多的合法用户购买你的应用程序)。
编辑一年后,这仍然(大部分)是准确的,但为了处理今天宣布的截获并重新发送真实回执的新破解,现在需要在服务器端做更多的工作。(幸运的是,如果您已经设置了验证服务器,您应该能够在不更新应用程序的情况下完成此操作)两个新要求:
1)检查您从Apple服务器获得的解密收据中的产品ID (应用程序ID和IAP产品ID)是否与用户正在购买的产品实际匹配。
2)通过保留以前使用的事务ID的日志,检查收据中的事务ID (或还原回执的还原事务ID)以前从未使用过。
然而,即使现在IAP破解对非越狱用户可用,我的基本观点仍然是,这可能会带来更多的麻烦,而不是它的价值-为了收回你将花费在实现和维护一批完全无趣的代码上的时间,你需要从那些非常不愿意为你的产品付费的人那里获得大量的额外销售,他们愿意大量牺牲他们的iPhone的安全性,以避免这样做。
发布于 2012-01-24 11:29:06
我刚刚在BinPress上找到了一个20美元的component,声称可以为你提供这种保护。事实上,正是阅读他们的描述促使我搜索IAP Cracker,并将我引向这个问题!
快速浏览一下描述,似乎值得一试,至少可以作为这些攻击的廉价屏障。
此组件提供保护,防止工具绕过应用程序内购买并免费解锁高级内容,例如最流行的“iAP Cracker”。保护通过托管在我们的服务器上的收据验证服务进行管理。它具有经过验证的安全性和可靠性,防止破解工具,并意味着尽可能容易地为开发人员集成。
‘应用内购买验证’是为那些不需要维护服务器并且希望避免自己管理购买验证的人准备的--这是一个巨大的时间节约:实现它就像插入几行额外的代码一样简单(见下文)。从那时起,服务器将施展它的魔力,它将与苹果服务器验证每一张收据。它还将为您提供购买的计数。
发布于 2012-08-05 01:06:37
苹果在这里指出了这个问题:In-App Purchase Receipt Validation on iOS
如正文所述,在交易完成后验证您的交易,您应该会没事(希望如此)。
https://stackoverflow.com/questions/7465713
复制相似问题