2

アプリの最初の起動時に操作を実行したかったのです。私はここで提案されているようにコードを書きました:アプリの初回起動を検出する方法、iphone。それはうまく機能しています。

iExplorerを使用してUserDefaultplistの内容を削除および変更できるため、アプリが期待どおりに機能していません。外部アプリ(iExplorer)によるアプリファイルの変更を制限する方法はありますか?

4

2 に答える 2

3

iExplorer を使用してシステム ファイルを変更すると、アプリが正しく機能しなくなる可能性があります。いくらか改ざんを防止する (それほど効率的ではありませんが) 方法の 1 つは、ローカル ファイルではなくサーバーで情報を管理することです。たとえば、アプリが Web サービスを呼び出して、設定を取得して保存する場合があります。それは、アプリケーション バンドルを改ざんして役に立たなくすることができないと言っているわけではありません。

一言で言えば、アプリを完全に改ざん防止にすることはできません

編集

Zaph が提案したように、キーチェーンを使用できます。をキーチェーンにキーとして保存するだけ[[NSBundle mainBundle] bundlePath]です。 bundlePathインストールごとに一意です。したがって、アプリが読み込まれるときにbundlePathキーチェーンを確認し、存在しない場合は、新規インストール/初回読み込みです。アプリがロードされbundlePathたら、キーチェーンに保存します。

于 2013-02-07T12:26:20.727 に答える
1

保護したいアイテムの値のハッシュを作成し、そのハッシュを暗号化して に保存しNSUserDefaultsます。ハッシュを解読するNSUserDefaultsと、フィールドのハッシュを再計算し、ハッシュが一致するかどうかを確認します。

単一の値など、少量のデータの場合は、キーチェーンに保存します。

于 2013-02-07T12:30:09.983 に答える