plist(プロパティリスト)ファイルmd5sumがiPhoneアプリにコンパイルされたときに変更されます

StackOverflow https://stackoverflow.com/questions/1142995

  •  16-09-2019
  •  | 
  •  

質問

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

前もって感謝します!

役に立ちましたか?

解決

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

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

他のヒント

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

アプリはデジタルで署名されているので、なぜあなたはプリストの完全性を心配しているのですか?誰かがそれを変更した場合、デジタル署名がもはや有効でないため、アプリはインストールされません。

もう1つの理由は、アプリがハッキングされていることを心配していることです。完全に合理的ですが、誰かがアプリをハッキングできれば、プリストを変更し、コードのチェックサムを変更して実行することもできます。実際にサードパーティからそれを取得せずにコンテンツの完全性を保証する方法は本当にありません(例えば、あなた自身のサーバー)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top