我试图把反盗版的代码在我的应用程序。以前的答案,这(我不能链接到的,因为我的会员身份 - 很烂)可以很容易地反击,因为“SignerIdentity”字符串可以寻找并使用十六进制编辑器二进制更换。

相反,检查Info.plist文件的文件长度和相对于一个基准值听起来更固体(因为裂化该应用时的info.plist是越来越这里和那里修改)。我会怎么做呢?我尝试以下但它记录0。

NSBundle *bundle = [NSBundle mainBundle];
NSDictionary *mainDictionary = [bundle infoDictionary];
NSLog(@"%d", [mainDictionary fileSize]);
有帮助吗?

解决方案

您可能会阻止noobish饼干在你的代码中发现,以“SignerIdentity”引用通过应用ROT13或类似的简单遮蔽算法 http://en.wikipedia.org/wiki/ROT13

施加ROT13后, “SignerIdentity” 将变成 “FvtareVqragvgl”。

总之,回答你的问题(你怎么弄的Info.plist文件的大小):

NSBundle *bundle = [NSBundle mainBundle];
NSString* bundlePath = [bundle bundlePath];

NSFileManager *fileManager = [NSFileManager defaultManager];

NSString* path = [NSString stringWithFormat:@"%@/Info.plist", bundlePath ];

NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:path 
                                                             error:NULL];

if (fileAttributes != nil) {
    NSNumber *fileSize;

    if (fileSize = [fileAttributes objectForKey:NSFileSize]) {
        NSLog(@"File size: %qi\n", [fileSize unsignedLongLongValue]);
    }           
}

另外,请记住,Info.plist在Xcode项目目录的大小(以字节为单位)和Info.plist管束内可能会有所不同。你可能想打造一次比赛,然后再看看<your app bundle.app>/Info.plist的大小,然后更新您的防盗版代码。

其他提示

我从来没有编好了iPhone,但不能你只是采取文件的哈希,并把它比作一个参考,可能腌制的哈希值,以防止有人只是改变了参考散列到新的<? / p>

这码具有仍有许多赠品:

字符串的Info.plist很容易找到。 NSFileSize也非常可疑....

如这里所述确定是否一个iPhone是监狱破编程的看起来有些通过install0us安装了最新的破解应用程序没有做好自己的info.plist修改。 (至少在info.plist中不包含任何signeridentity键)。 我们如何能够检测裂纹在这种情况下?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top