什么是可以接受的减少iPhone应用程序盗版的方法,这些方法不违反Apple的评估流程?
如果我的应用程序“打电话回家”提供运行它的唯一设备ID,我需要收集哪些其他信息(例如,用于购买应用程序的Apple ID)以创建授权使用的有效注册令牌申请?同样,我将使用什么代码来访问额外数据?
目前看来这个问题最好的技术方法是什么?
(请不要非编程答案关于盗版是如何不可避免的等等。我知道盗版是不可避免的。我对基于编程的答案感兴趣讨论如何减少它。提前感谢您的理解。)
答案 0 :(得分:48)
感谢评论中的chpwn。
目前,有一种更简单的方法可以检测您的iPhone应用程序是否因盗版而被破解。这不涉及您根据接受的ID列表检查iPhone唯一ID。
目前,破解者有三件事:
最后一个最容易检查此代码:
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无法规避应用程序的盗版检查。在应用程序的可执行文件中手动修补完整性检查很困难。所以你的应用程序很难破解。