减少iPhone应用程序的盗版

时间:2009-05-10 23:30:26

标签: iphone piracy piracy-prevention

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

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

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

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

4 个答案:

答案 0 :(得分:48)

更新

visit and read

感谢评论中的chpwn。

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

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

目前,破解者有三件事:

  1. 编辑Info.plist文件
  2. 将Info.plist从二进制解码为 UTF-8或ASCII
  3. 将一个密钥对添加到Info.plist {SignerIdentity, Apple iPhone OS应用程序签名}
  4. 最后一个最容易检查此代码:

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

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

    我不能相信这一点,所以请访问How to Thwart iPhone IPA Crackers.关于iPhone上的盗版以及如何遏制它的信息很多。

答案 1 :(得分:5)

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

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

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

如何查找filesize at launch

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

检查iTunesMetadata.plist购买日期,有时,当应用程序被破解时,该日期会更改为令人发指的事情。

同时检查买方名称字段是否存在。根据我破解个人使用应用程序的经验,通常会将其删除。如果有人知道Temple Run的防倾倒保护是如何工作的,你可以使用它与poedCrackMod无法获得的一些保护(google poedCrackMod创建hackulo.us帐户,转到dev中心寻找poedCrackMod,在iDevice上安装它)

Clutch不会像Temple Run一样破解保护,它有一个名为OverDrive的功能,旨在使应用程序的裂缝检测无声。 poedCrackMod有LamestPatch,这不是很好。另外poedCrackMod是一个开源的bash脚本,可以进行逆向工程。回顾一下,你有一个应用程序具有复制保护,不能用离合器/过载驱动,但可以用poedCrackMod破解。然而,poedCrackMod无法规避应用程序的盗版检查。在应用程序的可执行文件中手动修补完整性检查很困难。所以你的应用程序很难破解。