0

iPhoneアプリにplistファイルを含めています。バイナリ形式です(plutilを使用してxmlからバイナリに変換します)。実行時にMD5チェックサム(またはSHA-1)を実行して、その内容が期待どおりであることを確認したいと思います。残念ながら、私はいつも最初に含めたものとは異なるチェックサムを受け取ります。MD5の合計を間違って計算していると仮定して、1時間以上経過した後、テストを実行して、バイトが実際に同じであることを確認することにしました。そうではありません。ファイルサイズは同じままですが、バイト30から始まり、ファイル全体(最後の32バイトを除く)で、ファイルの内容は完全に異なります。プロパティリストファイルが署名されているかどうか、またはiPhoneアプリに含める前に別のバイナリ形式に「コンパイル」されているかどうかを誰かが知っていますか?もしそうなら、あなたはプロセスについてもっと詳細を提供できますか?

前もって感謝します!

4

2 に答える 2

1

デフォルトでは、Xcode は単純なコピーを行うのではなく、小さなスクリプトを使用して、ターゲットのビルド時に plist ファイルを処理およびコピーします。Xcode でターゲットの情報ウィンドウを表示して [ルール] タブを選択すると、text.plist ソース ファイルの処理に CopyPlistFile という独自のツールが使用されていることがわかります。デフォルトでは変換が実行されないように見えますが、plist が有効であることを確認するためにいくつかの基本的なチェックを行い、オプションで別の形式に変換することもできます。

これが原因で plist ファイルが変更されているかどうかはわかりませんが、必要に応じて、プロジェクト内の plist ファイル自体に関する情報を取得し、そのファイル タイプを「text.plist」から「text」に変更できます。これにより、Xcode はそれをプロパティ リスト ファイルではなくプレーン テキスト ファイルとして扱い、CopyPlistFile ツールを使用して実行する代わりに直接コピーを作成する必要があります。

于 2009-07-18T01:32:42.413 に答える
0

この質問の理由スタックをポップします。あなたの質問に対する答えはわかりませんが、なぜあなたがそれに時間を費やしているのか知りたいです。

アプリはデジタル署名されているのに、なぜ PList の整合性を気にする必要があるのでしょうか? 誰かが変更した場合、デジタル署名が無効になるため、アプリはインストールされません。

もう 1 つの理由は、アプリがハッキングされることを懸念している可能性があります。完全に合理的ですが、誰かがアプリをハッキングできる場合、PList を変更し、コード内のチェックサムを変更して、引き続き実行できるようにすることもできます。実際にサード パーティ (自分のサーバーなど) から取得しない限り、コンテンツの完全性を保証する方法はありません。

于 2009-07-17T17:53:10.263 に答える