减少iPhone应用程序的盗版

Ale*_*lds 62 iphone piracy piracy-prevention

什么是可以接受的减少iPhone应用程序盗版的方法,这些方法不违反Apple的评估流程?

如果我的应用程序"打电话回家"提供运行它的唯一设备ID,我需要收集哪些其他信息(例如,用于购买应用程序的Apple ID)以创建授权使用该应用程序的有效注册令牌?同样,我将使用什么代码来访问额外的数据?

目前看来这个问题最好的技术方法是什么?

(请避免关于盗版是如何不可避免的非编程答案等等.我知道盗版是不可避免的.我对基于编程的答案感兴趣,讨论如何减少盗版.提前感谢您的理解.)

Dav*_*ong 48

UPDATE

访问并阅读

感谢评论中的chpwn.

代码太老了! - 2009年5月11日

目前,有一种更简单的方法可以检测您的iPhone应用程序是否因盗版而被破解.这不涉及您根据接受的ID列表检查iPhone唯一ID.

目前,破解者有三件事:

  1. 编辑Info.plist文件
  2. 将Info.plist从二进制解码为UTF-8或ASCII
  3. 向Info.plist添加密钥对{SignerIdentity,Apple iPhone OS Application Signing}

最后一个最容易检查此代码:

NSBundle *bundle = [NSBundle mainBundle]; 
NSDictionary *info = [bundle infoDictionary]; 
if ([info objectForKey: @"SignerIdentity"] != nil) 
{ /* do something */  }
Run Code Online (Sandbox Code Playgroud)

通常我们在我们构建的任何App Store应用程序中都没有SignerIdentity,因此检查nil然后执行set指令应该使得对于破解者和盗版者来说更加困难.

我不能相信这一点,所以请访问如何阻止iPhone IPA Crackers.有大量关于iPhone盗版的信息以及如何遏制盗版.

  • 这是错的!这不是一个需要更长时间的APP!请改为检查二进制文件的"加密ID".该密钥不再需要,不再包括在内,是一种可怕的检查方式. (16认同)
  • 破解者很容易检查SignerIdentity文字字符串,或者用于infoDictionary选择器调用.你可能想要模糊它们."做某事"部分也很棘手:你不能马上失败,因为这会让饼干惊慌失措.因此,您需要在延迟时间内失败(可能会给他们30天的试用期,然后要求购买合法的副本).看,使这个有用并不​​是那么简单. (7认同)
  • 呃,你检查过提交的日期吗?它起作用了.没有必要把你的nickers打结.;) (7认同)
  • 我发现我的应用程序的破解版本的Info.plist文件与我提交给商店的文件相同.此检查不再有效. (5认同)
  • @David快速问题,没有人可以得到答案:如果这是一个如此容易(可能是5行)修复,为什么它没有更频繁地实施?你知道有什么缺点吗?应用程序商店中的大多数应用程序已被破解,可供下载. (3认同)
  • @Brad Larson:http://landonf.bikemonkey.org/code/iphone/iPhone_Preventing_Piracy.20090213.html (3认同)

sam*_*tte 5

正如Andrey Tarantsov在评论中指出的那样,在二进制文件中查找"SignerIdentity"字符串(使用类似HexEdit的应用程序)并替换它非常容易.

您可以对该字符串进行编码,但是您需要做的就是更改它的一个字符,并且应用程序不会再查找"SignerIdentity"键,而是查找可能不存在的其他键(因此为null ).该密钥为null,应用程序认为它没有被破解(因为如果应用程序没有被破解,SignerIdentity应为null).

相反,我宁愿检查info.plist的大小,并将其与参考值进行比较.我注意到模拟器和设备构建没有相同的info.plist文件大小.调试,发布和分发版本也是如此.因此,请确保使用Device Distribution Build的info.plist文件大小设置参考值.

如何在启动时查找文件大小: