Как вставить команду LC_LOAD_DYLIB в двоичный файл Mach-O или присоединить статическую библиотеку к существующему двоичному файлу (IOS)

Это первый раз, когда я спрашиваю о stackoverflow, и я в отчаянии.

Моя задача — загрузить dylib или присоединить статическую библиотеку к уже существующему исполняемому файлу для устройства IOS.

Я буду использовать static void __attribute__((constructor)) initialize(void)для запуска swizzling. Этот исполняемый файл предназначен для внутреннего корпоративного магазина приложений, поэтому мне не нужно проходить через магазин приложений Apple (поскольку они его отвергнут).

Причина этого заключается в том, чтобы взять существующий IPA от клиента и его ключи подписи и добавить новую функциональность в свое приложение, не требуя вмешательства разработчика.

Есть одна компания, которая занимается этим, называется нукона. Вы можете посмотреть фильм здесь: https://www.youtube.com/watch?feature=player_embedded&v=z9rrOB6lOxY

Могу вам сказать, что я пытался поместить LSEnvironment в файл plist с DYLD_INSERT_LIBRARIES но оказалось, что LSEnvironment не имеет никакого эффекта в песочнице приложения IOS.

Я также попробовал install_name_tool для изменения одной из зависимостей и замены ее моей dylib (у которой тоже есть эта зависимость). Вылетает без объяснения причин.

Очевидно, что если я добавлю dylib к тестовому приложению в XCode и перекомпилирую, он будет отлично работать, что является данностью.Однако это то, о чем я не могу спросить, например, администратора компании. Пересборка может отпугнуть клиентов от использования этой библиотеки.

Вот связанная ссылка, которую я нашел о переполнении стека, но для osx, и мне это нужно для IOS. Как вставить команду LC_LOAD_DYLIB в двоичный файл Mach-O (OSX)

Единственное, что я могу придумать, это каким-то образом отредактировать двоичные команды загрузки, но я не уверен, как и как это сделать, используя с учетом таблиц перемещений и т.д...

Любая альтернатива приветствуется.

Спасибо за внимание.

12
задан Community 23 May 2017 в 12:02
поделиться