减lessiPhone应用程序的盗版

什么是可接受的方法来减lessiPhone应用程序盗版,这不违反苹果的评估过程?

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

这个问题似乎是目前最好的技术方法?

(关于盗版是不可避免的,请不要写非编程的答案 ,我知道盗版是不可避免的,我对基于编程的答案感兴趣,讨论如何减less盗版。

UPDATE

请访问并阅读

感谢chpwn的评论。

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

现在有一个更简单的方法来检测您的iPhone应用程序是否因盗版而被破解。 这并不涉及您根据可接受的ID列表检查iPhone的唯一ID。

目前有三样东西:

  1. 编辑Info.plist文件
  2. 将Info.plist从二进制解码为UTF-8或ASCII
  3. 添加一个密钥对Info.plist {SignerIdentity,苹果iPhone操作系统应用程序签名}

最后一个是最简单的检查这个代码:

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

一般来说,我们在任何App Store应用程序中都没有SignerIdentity,因此如果检查没有,然后执行设置指令,那么对于cookies和海盗来说就更困难了。

我不能赞扬这一点,所以请访问如何阻止iPhone IPAcookies。 有大量关于iPhone盗版的信息,以及如何遏制盗版。

正如Andrey Tarantov在评论中指出的,在二进制文件(使用像HexEdit这样的应用程序)中查找“SignerIdentity”string并replace它非常容易。

你可以编码这个string,但是你所要做的只是改变它的一个字符,应用程序不会再去寻找“SignerIdentity”键了,但是对于其他可能不存在的键(因此是空的)。 该键为空,该应用程序认为它没有被破解(因为SignerIdentity应该为null,如果应用程序没有被破解)。

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

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

它看起来像保存Plist的MD5校验和,并检查CryptID应该做的好,直到一段时间。

检查iTunesMetadata.plist购买date,有时,当一个应用程序被破解,该date变成了一些离谱。

另外检查是否存在购买者姓名字段。 在我个人使用的破解应用程序的经验,通常是删除。 如果有人知道Temple Run的反转储保护是如何工作的,你可以使用poedCrackMod无法获得的一些保护(google poedCrackMod创buildhackulo.us账户,去开发中心寻找poedCrackMod,在iDevice上安装) 。

离合器不会像Temple Run那样破解东西,有一个叫OverDrive的function,旨在使应用程序的裂缝检测无声。 poedCrackMod有LamestPatch,这不是很好。 另外poedCrackMod是一个开源的bash脚本,可以被反向工程。 回顾一下,你有一个应用程序具有复制保护,无法绕过离合器/超速,但可以用poedCrackMod破解。 然而,poedCrackMod无法绕过应用程序的盗版检查。 在应用程序的可执行文件中手动修补整合检查是很困难的。 所以你的应用程序很难破解。