6

心配しないでください。他の人のアプリをハッキングしようとしているわけではありません。

無料版とデラックス版の 2 つのバージョンのアプリが必要です。私の計画は、アプリ内購入を使用して、plist ファイルにブール値を設定することでデラックス バージョンを有効にすることでした。

私の質問は次のとおりです。これは安全ですか、それとも簡単に回避できますか? 安全でない場合、誰かが簡単な代替案を提案できますか? 追加のコンテンツをダウンロードするのではなく、すべての機能をアプリ内に保持して、何らかの形で有効にしたい.

編集:アプリケーションのplistファイルではなく、ユーザーのデフォルトファイルのようなものです。

4

7 に答える 7

4

これをキーチェーンに保存する必要があります。これが私が行うことです。キーチェーンは、.plist やユーザーのデフォルト (私の知る限り、.plist も) よりもはるかに安全です。SFHFKeychainUtilsを見てください。これを使用するか、単純なブール値を保存する必要性に正確に対応するより良い方法を実装する必要があります。

于 2010-03-17T18:03:55.740 に答える
3

com.something.plistジェイルブレイクせずに簡単に編集できます。無料のツール* を使用すると、デバイスを参照したり、これらのファイルを編集および保存したりできます。アプリ内購入を次のように保存する場合:

[[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 がデバイスに依存する場合、コピーは役に立ちません。

于 2012-09-26T11:14:51.617 に答える
2

アプリ内購入の確認について読むことをお勧めします。あなたがまだ考えていないかもしれない問題を抱えているかもしれない独自のアプリ内購入検証システムを展開しようとしているように私には思えます. ユーザーの購入については、他のアプリケーションと同じようにアプリケーションで動作するように注意する必要があります.

于 2010-03-17T22:09:17.917 に答える
1

海賊は脱獄した iPhone を持っている 脱獄したデバイスは、PhoneDisk などのツールを介してファイル システムへの完全なアクセスを提供する ファイル システムへのアクセスは、アプリケーションの .plist ファイルの値を変更することを可能にする

ゲームオーバー。

さて、スクリプトキディのためにそれをラップするのは簡単ではありませんが、それほど難しいことでもありません.

于 2010-03-17T22:16:57.447 に答える
1

Info.plist ファイルについて心配する代わりに、単に環境設定を設定してみませんか? コードのどこかで、これによりブール値が得られます。

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

値が存在しない場合、結果は になりますnil。このコードは次の値を設定します。

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

さらに、これらの値は iTunes にバックアップされるため、ユーザーがバックアップを新しい iPhone に移動するか、単にバックアップから復元すると、値が復元されます。

于 2010-03-17T17:55:20.300 に答える
1

答えはありませんが、この件名を信頼している場合、plist ファイルを動的に編集することはできないようです:

info.plist ファイルを動的に編集することはできません。アプリを App Store に送信すると、info.plist を含むアプリ バンドルは変更できません。これは、アプリのコンパイル時に作成される署名がバンドルに基づいているためです。

于 2010-03-17T17:55:35.400 に答える
0

状態をデフォルトに保存することは、アプリの 2 つのバージョンを保持することと同じくらいプライバシーから保護されます。海賊は、デラックス版を海賊版にするか、旗を立てた統合版を海賊版にするかのどちらかです。

于 2010-03-17T22:20:17.957 に答える