获取info.plist的fileSize以防止盗版

我试图把反盗版代码放在我的应用程序中。 以前的答案(我不能链接到,因为我的成员状态 – 糟透了)可以很容易地反驳,因为可以查找“SignerIdentity”string并使用hex编辑器replace二进制文件。

相反,检查info.plist文件的fileSize并将其与参考值进行比较听起来更稳固(因为在破解应用程序时,info.plist在这里和那里都得到了修改)。 我该怎么做? 我尝试了以下,但它logging0。

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

您可以通过应用ROT13或类似的简单模糊algorithmhttp://en.wikipedia.org/wiki/ROT13来防止noobishcookies在您的代码中find对“SignerIdentity”的引用

申请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]); } } 

另外请记住,Xcode项目目录中Info.plist的大小(以字节为单位)和bundle中的Info.plist可能有所不同。 您可能想要构build游戏一次,然后查看<your app bundle.app>/Info.plist的大小,然后更新您的<your app bundle.app>/Info.plist代码。

我从来没有为iPhone编写程序,但是你能不能把这个文件的哈希值和一个参考文件进行比较,可能会对哈希值进行腌制,以防止有人将参考哈希值更改为新值?

该代码还有许多赠品:

stringInfo.plist很容易find。 NSFileSize也是非常可疑….

如这里所说的确定一个iPhone是否被破解以编程方式,它看起来像通过install0us安装的最新的破解应用程序没有修改它们的info.plist。 (至lessinfo.plist不包含任何signeridentity键)。 我们怎么能在这种情况下检测到破解?

Interesting Posts