有哪些公认的减少 iPhone 应用程序盗版且不违反 Apple 评估流程的方法?

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

目前解决这个问题的最佳可用技术方法是什么?

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

有帮助吗?

解决方案

更新

访问和阅读

感谢评论中的 chpwn。

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

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

目前,破解者做了三件事:

  1. 编辑 Info.plist 文件
  2. 将info.plist从二进制转换为UTF-8或ASCII
  3. 将密钥对添加到info.plist {SignerIdentity,Apple iPhone OS应用程序签名}

最后一个最容易用以下代码检查:

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

一般来说,我们构建的任何 App Store 应用程序中都没有 SignerIdentity,因此检查 nil 然后执行设置指令应该会让破解者和盗版者更加困难。

我不能为此承担任何责任,所以请访问 如何阻止 iPhone IPA 破解。 那里有大量关于 iPhone 盗版以及如何遏制盗版的信息。

其他提示

如在评论中指出由安德烈Tarantsov,寻找在二进制的“SignerIdentity”字符串(使用像hexedit的一个应用程序),并替换它是相当容易的。

您可以编码字符串,但话又说回来你所要做的就是改变它的一个字符和应用程序是不会去寻找“SignerIdentity”键了,但是对于其他一些重要的,可能不存在(因此为空)。这键值为空,应用程序认为没有破碎(因为SignerIdentity为空,如果应用程序是未破解)。

相反,我宁愿检查的info.plist的大小,并比较它的参考值。我注意到模拟器和设备版本不具有相同的Info.plist文件的大小。这同样适用于调试,发布和分发版本。因此,请确保您设置使用Info.plist文件大小为器械经营建立参考值。

如何查找在发射的文件大小:

它看起来像节约的plist的MD5校验和检查未确认动物应该直到一段时间做的很好。

检查iTunesMetadata.plist为Purchace的日期有时,当一个应用程序被破解,该日期变更为东西离谱。

还检查以查看是否purchacer名称字段存在。在我与破裂供个人使用的应用经验,通常删除。如果有人知道神庙逃亡的反倾销保护是如何工作的,你可以用在一些保护是poedCrackMod不能得到结合(谷歌poedCrackMod创建hackulo.us帐户,去到dev的poedCrackMod中心看,上的iDevice安装)

离合器,其不会开裂与寺运行之类的东西的保护,有一个称为超速驱动特征旨在沉默应用程式的裂缝检测。 poedCrackMod有LamestPatch,这是没有那么好。此外poedCrackMod是一个开源的bash脚本,可以进行反向工程。总括来说,你必须拥有不能用离合器/超速被规避,但可以用poedCrackMod被破解复制保护的应用程序。然而poedCrackMod不能规避盗版的应用程序检查应用程序的。这是很难手动补丁integrety检查在应用程序的可执行文件。所以,你的应用程序是难以破解。

scroll top