確認する最も簡単な方法は、embedded.mobileprovision
( [[NSBundle mainBundle] pathForResource:@"embedded.mobileprovision" ofType:nil]
)を確認することです。
- 署名された plist ( によると、PKCS#7 署名データ) であるため、解析するのは少し面倒ですが、悪いハックは、 and を
openssl asn1parse -inform der
探すことです。<plist
</plist>
- 開発には UDID が含まれており、
<key>get-task-allow</key><true/>
- アドホック配布には UDID が含まれます (および get-task-allow=false)
- App Store ディストリビューションには UDID が含まれていません。
他に確認できることは、実行可能ファイルに埋め込まれた資格です (otool -l
としてリストされますLC_CODE_SIGNATURE
)。これを解析するのはさらに面倒です (Mach-O ヘッダーと読み込みコマンドを解析する必要があり、現在デフォルトになっている「ユニバーサル」バイナリについては、現在読み込まれているアーキテクチャまたはすべてのアーキテクチャを確認する必要があります)。
- 開発ビルドには含まれています
<key>get-task-allow</key><true/>
- アドホック ビルドと App Store ビルドには次のものが含まれます
<key>get-task-allow</key><false/>
権利が Ad Hoc ビルドと App Store ビルドを区別しているとは思わない。
それらと署名された証明書を除けば、開発/アドホック/App Store アプリの間に違いはありません (資格/プロビジョニング プロファイルには他にもいくつかありますが、私が考えることができるより信頼できるものはありません)。
セキュリティに関する考慮事項
これらのいずれも、回避するのはそれほど困難ではありません。最初の方法では、アプリは単に「スウィズル」することができ-[NSBundle pathForResource:ofType:]
ます。2 番目の方法は、ファイルの読み取りに使用する API によっては少し難しくなります。