在应用商店应用中破解plist文件有多容易?

时间:2010-03-17 17:27:19

标签: iphone plist in-app-purchase

别担心,我不是想破解其他人的应用程序,如果这就是你在想的那样=。)

我想拥有我的应用程序的2个版本,免费版本和豪华版本。我的计划是通过在plist文件中设置一个布尔值来使用应用内购买来启用豪华版本。

我的问题是:这是安全还是容易被规避?如果它不安全,有人可以提出一个简单的替代方案吗?我不想下载其他内容,我宁愿保留应用程序中的所有功能并以某种方式启用它。

编辑:我不是指应用程序plist文件,而是用户默认文件。

7 个答案:

答案 0 :(得分:4)

你应该将它存储在钥匙串中,这就是我要做的。钥匙串比.plist或用户默认值(根据我所知也是.plists)安全得多。看看SFHFKeychainUtils,您应该能够使用它,或者只是为了保存简单的bool而实现更好的方法。

答案 1 :(得分:3)

在没有越狱的情况下编辑com.something.plist很容易。使用免费工具*您可以浏览您的设备,您也可以编辑和保存这些文件。如果您将inapp购买存储起来:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"com.example.pack1"];
[[NSUserDefaults standardUserDefaults] synchronize];

然后这将被写入plist:

<key>com.example.pack1</key>
<true/>

如果您将包裹命名为:pack1,pack2等,并且有人编辑您的plist(复制/粘贴第一个键),他/她可以轻松使用锁定的功能。

一个不太难实现的方法就是像这样保存:

[[NSUserDefaults standardUserDefaults] setValue:[self sha1ValueForKey:@"com.example.pack1"]               
                                         forKey:@"com.example.pack1"];
 [[NSUserDefaults standardUserDefaults] synchronize];

其中-sha1ValueForKey:

-(NSString *)sha1ValueForKey:(NSString *)key {
    return [self sha1:[NSString stringWithFormat:@"<SALT>%@", key]];
}

您必须将<SALT>更改为某些内容。

您可以在此处找到-sha1:http://www.makebetterthings.com/iphone/how-to-get-md5-and-sha1-in-objective-c-ios-sdk/

在此之后,您可以验证密钥是否与哈希值匹配。

如果有人想破坏你的plist,他/她必须知道你的散列机制和盐。 这不是保护您的应用程序最安全的方法,但它很容易实现。

* IEXPLORER

修改
如果用户无权访问散列值,建议的方法仅在某种程度上保护您的IAP。如果有人从某个地方获取它,很容易将该数据复制到plist。如果SALT是依赖于设备的,则复制是无用的。

答案 2 :(得分:2)

我建议您阅读verifying in-app purchases。听起来我觉得你正试图推出自己的应用内购买验证系统,这可能是你可能还没有想到的问题。你必须小心你的用户购买,他们在你的应用程序中的行为与在任何其他用户中的行为相同,以免你失去信任(以及未来的销售!)

答案 3 :(得分:1)

为什么不设置首选项,而不是担心Info.plist文件?在代码的某处,这会给你你的布尔值:

[[NSUserDefaults standardUserDefaults] boolForKey:@"someKey"];

如果该值不存在,则结果为nil。此代码设置值:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"someKey"];

另外,这些值将在iTunes中备份,因此如果用户将备份移至新iPhone或只是从备份恢复,则会恢复这些值。

答案 4 :(得分:1)

我没有答案,但似乎无法动态编辑plist文件,如果我相信this subject

  

您无法编辑自己的info.plist   动态文件。当你提交你的   应用程序到App Store,您的应用程序包,   其中包括info.plist,不能   因为签名创建而改变   当你编译你的应用程序是基于   捆绑。

答案 5 :(得分:1)

任何海盗都有一个破牢的iPhone 任何越狱设备都可以通过PhoneDisk等工具提供完整的文件系统访问 任何文件系统访问都允许人们更改应用程序.plist文件中的值

游戏结束。

现在,将脚本小子包装起来并不是一件容易的事情,但是它也不是那么难。

答案 6 :(得分:0)

在默认情况下存储状态对于隐私来说比拥有两个版本的应用程序更安全。海盗会盗版豪华版,或者他们会用旗帜套装盗版统一版。