如何防止我的设置(文件,NSUserdefaults)被iExplorer等外部应用程序修改

时间:2013-02-07 12:16:46

标签: ios objective-c nsuserdefaults

我想在App首次发布时进行一些操作。我已按照此处的建议编写了我的代码:how to detect first time app launch,iphone。它运作良好。

我可以使用iExplorer删除和修改UserDefault plist中的内容。所以我的应用程序无法按预期运行。有没有办法限制外部应用程序(iExplorer)修改应用程序文件?

2 个答案:

答案 0 :(得分:3)

如果使用iExplorer更改系统文件,则可以使任何应用程序无法正常运行。使 有点 防篡改(虽然效率不高)的一种方法是管理服务器上的信息而不是本地文件。例如,您的应用可能会调用Web服务来检索和存储设置。这并不是说他们无法篡改您的应用程序包,使其变得无用。

简而言之,您无法使您的应用完全防篡改

修改

正如扎普所说,你可以使用钥匙串。只需将[[NSBundle mainBundle] bundlePath]存储为钥匙串中的钥匙即可。 bundlePath对于每个安装都是唯一的。因此,当您的应用加载时,检查钥匙串中的bundlePath,如果不存在,那么它是全新安装/首次加载。加载应用后,将bundlePath保存到钥匙串。

答案 1 :(得分:1)

创建要保护的项的值的哈希值,加密该哈希值并将其保存在NSUserDefaults中。读取NSUserDefaults时解密哈希值,重新计算字段的哈希值,并检查哈希值是否匹配。

如果是少量数据,比如单个值,请将其保存在钥匙串中。