【发布时间】:2012-09-28 06:20:26
【问题描述】:
曾经有一种方法可以检查应用程序是否从 App Store 购买,以防止被破解:
NSBundle *bundle = [NSBundle mainBundle];
NSDictionary *info = [bundle infoDictionary];
if ([info objectForKey: @"SignerIdentity"] != nil)
{ /* do something */ }
但是这种方法不再有效,因为破解者已经找到了改变 Info.plist 的方法。我知道this older question,但那里提供的答案依赖于上述技术,该技术不再有效。
如何在不读取 Info.plist 中的 SignerIdentity 的情况下检测您的应用程序是否被破解或从 App Store 合法购买?
【问题讨论】:
-
澄清一下...您想知道您的应用程序是否安装在 App Store 以外的设备上? (例如,通过开发者渠道还是非法?)
-
+1 表示希望看到最新的答案。重复的答案和编辑后的答案都是 2009 年的!
-
老实说,不要打扰。首先,破解者有很多新技术可以绕过这些东西,所以他们总是领先一步,最重要的是,一开始可能不值得。我的一些非开发人员朋友盗版了东西,他们要么免费获得,要么不获得。如果他们安装了一个应用程序并显示“这个应用程序是盗版的,请从应用商店购买”,他们只会删除它。
-
在对先前问题的投票最高的答案以及对该答案的更新中,提到了另一种技术作为替代 Info.plist 检查的首选技术:@ 987654322@。这种方法是否也不再有效?
-
我曾经读过 Rovio 开发人员的一篇文章,说花时间对抗黑客比不理会它会损失更多的钱。更重要的是,盗版可能会为您的应用带来一些新用户。他们免费下载并使用它,如果他们喜欢它,他们可能会将它推荐给以后会购买您的应用程序的非盗版者。 @Greg 所说的也是正确的。我有一个越狱设备,并购买 Skype。当我启动它时,我有一个很棒的 UIAlertView 说这个应用程序不能在越狱设备上运行,然后终止该应用程序。喜欢它。