iphone - 如何检测 "IAP crackers"?

标签 iphone objective-c cydia

我发现许多用户使用所谓的“IAP 破解器”而不是在应用内购买 (IAP) 中购买商品。我还了解到 Zynga Poker 和 Pokerist 已经检测到 IAP 破解程序并防止伪造 IAP。我想检测哪部手机正在使用 IAP 破解程序。对于 Cydia 黑客工具,我可以通过应用程序路径找到它。

但是因为我不相信 iAP 破解程序属于特定的应用程序。我想我可以通过调用“Url Scheme”来检查,但我不知道名字。有没有人知道怎么做?

最佳答案

目前最好的解决方案似乎是使用外部服务器验证 IAP 交易,然后发送回某种特定于设备的 key 来解锁只能在该服务器上生成的付费项目。这不是万无一失的,但它应该使您的应用程序对任何通用 IAP 破解系统具有高度抵抗力;想要破解您的应用程序的人几乎必须专门为它开发破解程序。 (这要复杂得多,远远超出了大多数使用 IAP Cracker 的人的能力范围)

以下是您基本上需要做的:

  • 设计您的应用内安全解决方案;某种独特的 key ,可以解锁您添加的功能。如果添加的功能采用数据文件的形式,那么这可能是解密该文件的加密 key ,如果全部在代码中,那么它会有点困难,但有很多创造性的解决方案(例如加密的字符串常量)。但是,无论它是什么,它都应该依赖或检查是否存在将从您的 Web 服务器获取的某些数据。
  • 修改您的 IAP 处理代码,以便当它看到处理的交易时,它将该交易的详细信息发送到您的 Web 服务器并取回步骤 1 中所需的唯一 key 。
  • 在您的 Web 服务器上编写一个简单的脚本,获取交易详细信息,与 Apple 进行验证(有关收据验证如何工作的详细信息,请参阅开发人员文档 - 非常简单的 JSON 请求),并在成功验证后返回步骤 1 中的 key 。

  • (请参阅下面编辑后的文本,了解您现在需要在第 3 步中进行的一些额外验证)

    在您的情况下,由于您的应用程序已经被破解并且您正试图停用非法获取您的 IAP 项目的人,您将在您的应用程序的新版本中推出此功能,然后在新版本的第一次调用 restoreCompletedTransactions运行版本以重新验证/重新激活您的合法用户的购买并阻止其他所有人。

    然而,我应该补充一点,这是一个 LOT 的工作——我们花了几周的程序员时间让它顺利运行,尽管现在有开源代码可以处理大部分步骤 2 和 3你。重新激活步骤还有支持和公关成本 - 不可避免地,有些人会更改 iTunes 帐户或没有互联网连接或类似的东西,他们可能会很生气,甚至短暂地失去对他们合法支付的东西的访问权限.

    您需要权衡是否真的值得为此投入时间,因为该破解仅适用于越狱用户(因此 90% 的潜在客户不受影响)并且大多数安装它的人不太可能为您的应用付费反正;不要被大量用户破解你的应用程序吓到了,很多人会很乐意免费下载一些东西,即使他们从不付费。您最好将时间花在使合法用户受益的改进上(并鼓励更多人购买您的应用)。

    EDIT 一年后,这仍然(大部分)准确,但要处理今天宣布的拦截并重新发送真实收据的新破解,现在需要在服务器端做更多的工作。 (幸运的是,如果您已经设置了验证服务器,您应该可以在不更新您的应用程序的情况下执行此操作)两个新要求:

    1) 检查您从 Apple 服务器返回的解密收据中的产品 ID(应用程序 ID 和 IAP 产品之一)是否与用户购买的产品实际匹配。

    2) 检查收据中的交易 ID(或恢复收据的恢复交易 ID)以前从未使用过,通过记录以前使用过的交易 ID。

    尽管现在非越狱用户可以使用 IAP 破解,但我的基本观点仍然是,这可能比它的值(value)更麻烦 - 收回您将花费的时间来实现和维护一批完全不有趣的代码,你需要从那些不愿意为你的产品支付费用的人那里获得大量额外的销售额,他们愿意为了避免这样做而大量损害他们 iPhone 的安全性。

    关于iphone - 如何检测 "IAP crackers"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7465713/

    相关文章:

    ios - 在 xcode 的 .pch 文件中导入的类不起作用,为什么?

    objective-c - 无法从该类的 Swift 扩展中的 Objective-C 类调用某些方法

    ios - iOS7 中是否删除了 UIGetScreenImage() 函数?

    iphone - 使应用程序在后台无限制地保持事件状态(对于 Cydia 应用程序)

    ios - UINavigationBar 在 iOS 7 中使用自定义颜色模糊

    ios - 类似于 iMessage 的 Split View Controller 中的弹出 View Controller ?

    android - 如何将用户输入的数据保存到编辑文本中,以便在同一应用程序的另一个 Activity 中查看

    ios - 在越狱的 iOS 上使用 ar 或 libtool 创建静态存档失败

    iphone - 将文件中的图像发布到 Facebook?

    iphone - iPhone API-通过音频插孔发送电信号