2

我想在App第一次启动时做一些操作。我已经按照此处的建议编写了代码:如何检测首次应用启动,iphone。它运作良好。

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

4

2 回答 2

3

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

简而言之,你不能让你的应用完全防篡改

编辑

正如 Zaph 所建议的,您可以使用钥匙串。只需将其[[NSBundle mainBundle] bundlePath]作为钥匙存储在钥匙串中。 bundlePath每个安装都是唯一的。因此,当您的应用程序加载时,请检查bundlePath钥匙串,如果不存在,则它是全新安装/首次加载。应用程序加载后,将 保存bundlePath到钥匙串。

于 2013-02-07T12:26:20.727 回答
1

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

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

于 2013-02-07T12:30:09.983 回答