Где бинарные файлы iOS-фреймворков находятся в файловой системе?

Я немного растерялся из-за фреймворков на iOS. Я думаю, что это в основном каталог, содержащий динамическую библиотеку, заголовки и ресурсы.

Но в моем устройстве каталоги каркасов в System / Library / Frameworks не содержат динамическую библиотеку. Как это возможно? Должно ли оно присутствовать для загрузки в память при запуске приложения, которое требует его?

Ответы на вопрос(2)

Я тоже это заметил. Странный. Я не могу вам объяснить, где они, но я заметил, например:

Если я перечислю (частный) каталог фреймворка:

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 Дилиб файл.However, this code does actually work чтобы динамически открыть эту структуру, как будто этот файл существует:

handle = dlopen("/System/Library/PrivateFrameworks/BluetoothManager.framework/BluetoothManager", RTLD_LAZY);

С использованиемfind команда из корневой файловой системы (& quot; / & quot;) также не находит файл на устройстве с именемBluetoothManager.

Я знаю, что это, вероятно, не тот ответ, который вы ищете, но в зависимости отwhy Вы хотите знать, может быть, это помогает?

 27 нояб. 2017 г., 11:52
@ gabbler, да, это был взломанный iPhone 4 с включенным ssh-доступом.
 27 нояб. 2017 г., 06:38
Как вы выполнили команду ls на iPhone4, был ли телефон взломан?
Решение Вопроса

Двоичные файлы больше не существуют на устройстве (и не существуют с iOS 3.1): Apple объединила их в один большойmmap()Файл кэша ed, чтобы запуск приложения был немного более эффективным. Поскольку страницы обычно никогда не меняются, ядро может эффективно делить их между каждым запущенным образом. Вы все еще можете использоватьdlopen() для файлов, хранящихся в кэше, какdyld поиск файлов с короткими замыканиями, когда указанная библиотека существует в кеше.

Кеш файл находится в/System/Library/Caches/com.apple.dyldи назван в честь архитектуры (armv6 или жеarmv7). Библиотеки внутри могут быть извлечены с использованиемdsc_extractor или KennyTM's dyld_decache, доступныйв этом хранилище, но после извлечения они не могут быть должным образом загружены в память (поскольку все они эффективно объединяют свои таблицы символов в кеше).

Здесь немного лучше (хотя и старше и менее информировано, более подробно) здесь:http://blog.howett.net/2009/09/cache-or-check/.

Ваш ответ на вопрос