我想在App首次发布时进行一些操作。我已按照此处的建议编写了我的代码:how to detect first time app launch,iphone。它运作良好。
我可以使用iExplorer删除和修改UserDefault plist中的内容。所以我的应用程序无法按预期运行。有没有办法限制外部应用程序(iExplorer)修改应用程序文件?
答案 0 :(得分:3)
如果使用iExplorer更改系统文件,则可以使任何应用程序无法正常运行。使 有点 防篡改(虽然效率不高)的一种方法是管理服务器上的信息而不是本地文件。例如,您的应用可能会调用Web服务来检索和存储设置。这并不是说他们无法篡改您的应用程序包,使其变得无用。
简而言之,您无法使您的应用完全防篡改
修改强>
正如扎普所说,你可以使用钥匙串。只需将[[NSBundle mainBundle] bundlePath]
存储为钥匙串中的钥匙即可。 bundlePath
对于每个安装都是唯一的。因此,当您的应用加载时,检查钥匙串中的bundlePath
,如果不存在,那么它是全新安装/首次加载。加载应用后,将bundlePath
保存到钥匙串。
答案 1 :(得分:1)
创建要保护的项的值的哈希值,加密该哈希值并将其保存在NSUserDefaults
中。读取NSUserDefaults
时解密哈希值,重新计算字段的哈希值,并检查哈希值是否匹配。
如果是少量数据,比如单个值,请将其保存在钥匙串中。