私はiOSのフレームワークについて混乱しています。私は彼らが基本的にダイナミックライブラリ、ヘッダーとリソースを含むディレクトリだと思う。iOSフレームワークのバイナリはファイルシステムにどこにありますか?
私のデバイスでは、System/Library/Frameworksのframeworksディレクトリにダイナミックライブラリが含まれていません。これはどのように可能ですか?それを必要とするアプリケーションが起動されたときにメモリにロードされるべきではありませんか?
私はiOSのフレームワークについて混乱しています。私は彼らが基本的にダイナミックライブラリ、ヘッダーとリソースを含むディレクトリだと思う。iOSフレームワークのバイナリはファイルシステムにどこにありますか?
私のデバイスでは、System/Library/Frameworksのframeworksディレクトリにダイナミックライブラリが含まれていません。これはどのように可能ですか?それを必要とするアプリケーションが起動されたときにメモリにロードされるべきではありませんか?
バイナリは、デバイス上に存在しなくなりました(iOS 3.1以降はありません)。Appleは、それらをすべて1つの大きなキャッシュファイルにマージしました。通常、ページは決して変更されないので、カーネルは実行中のすべてのイメージ間で効果的にそれらを共有できます。指定されたライブラリがキャッシュに存在する場合は、dyld
ファイルの短絡を検出するため、キャッシュ内に保持されているファイルに対しては、引き続きdlopen()
を使用できます。
キャッシュファイルは/System/Library/Caches/com.apple.dyld
であり、アーキテクチャ(armv6
またはarmv7
)の名前になっています。ライブラリは、内in this repository利用可能dsc_extractorまたはKennyTMのdyld_decacheを、使用して抽出することができますが、一度、彼らは実際に適切にメモリにロードすることはできません抽出(それらはすべてが効果的にシンボルテーブルをキャッシュにマージされますよう。)
ビットがありますより良い(より古くて知識の少ない、より詳細な)書き込みはここにある:http://blog.howett.net/2009/09/cache-or-check/。
私もこれに気付きました。奇妙な。 「彼らがどこにいる」私はあなたに説明することはできませんが、私は、たとえば、観察した:
私は(プライベート)のフレームワークディレクトリをリストする場合:
iPhone4:/System/Library/PrivateFrameworks/BluetoothManager.framework root# ls -alt
total 8
lrwxr-xr-x 1 root wheel 28 Nov 4 2011 CodeResources -> _CodeSignature/CodeResources
drwxr-xr-x 3 root wheel 170 Nov 2 2011 ./
drwxr-xr-x 2 root wheel 102 Nov 2 2011 _CodeSignature/
-rw-r--r-- 1 root wheel 740 Nov 2 2011 Info.plist
drwxr-xr-x 170 root wheel 5814 Dec 31 2007 ../
iPhone4:/System/Library/PrivateFrameworks/BluetoothManager.framework root# ls -alt _CodeSignature/
total 0
drwxr-xr-x 3 root wheel 170 Nov 2 2011 ../
drwxr-xr-x 2 root wheel 102 Nov 2 2011 ./
-rw-r--r-- 1 root wheel 1222 Nov 2 2011 CodeResources
あなたはBluetoothManager.framework/BluetoothManager
が表示されませんdylibファイル。そのファイルが存在するかのようにしかし、このコードは、実際に、動的にそのフレームワークを開くために動作しない:ルートファイルシステム(「/」)からfind
コマンドを使用
handle = dlopen("/System/Library/PrivateFrameworks/BluetoothManager.framework/BluetoothManager", RTLD_LAZY);
位置も指定したデバイスには、ファイルが見つかりませんBluetoothManager。
私はそれがおそらくあなたが探している答えではないことを知っていますが、に応じて、なぜあなたが知りたい、多分それは助けますか?
iPhone4でどのようにlsコマンドを実行しましたか?電話機は脱獄されましたか? – gabbler
@ gabbler、はい、これはjailbroken iPhone 4で、sshアクセスが有効になっています。 – Nate