2014-12-27 3 views

ответ

1

Tweak - это dylib - он будет загружен в процессе. Этот процесс может иметь права, и эти права будут использоваться для настройки. Вот и все. У Tweak нет собственных прав.

Что касается вашего вопроса. Из-за того, что я сказал, прежде чем вы не можете ограничить просто настройку - ваши ограничения будут применены ко всему процессу, который будет изменен. Вы ничего не можете с этим поделать. Вот как работают настройки - они являются динамически загружаемыми в пространство адресов процессов. После этого настройка становится частью процесса. Таким образом, любые ограничения будут применены ко всему процессу, который включает в себя твик, код приложения и любое другое приложение dylib/framework.

Итак, если вы хотите разработать приложение, которое поможет пользователю наложить ограничения на настройки, я не думаю, что вы можете это сделать. Что вы можете сделать, так это проанализировать, какое приложение настраивается, какие права у них есть, какие фреймворки и dylib используются в настройках (в основном частных). И от этого пользователя можно включить или отключить эту настройку. Вы даже можете проанализировать секцию импорта и строковые литералы настройки, чтобы точно определить, какие API они используют.

Update

Не могли бы вы объяснить мне, как родной процесс связывается с подстройки, перед загрузкой в ​​пространстве процесса?

Это не так. Перед инъекцией tweak - отдельный dylib, который не связан с каким-либо двоичным кодом. CydiaSubstrate делает все инъекции. Основная часть CydiaSubstrate - специальный погрузчик dylib. Он динамически связан с процессом launchd при запуске устройства, к процессу, который является первым процессом в iOS, который запускает все остальные процессы. Когда создается новый процесс, загрузчик CydiaSubstrate dylib проверяет все фильтры настройки, чтобы увидеть, какие из них ему нужно внедрить в процесс, и вводит их. После этого настройка загружается в адресное пространство процесса (становится частью процесса), и конструктор tweak вызывается, где обычно устанавливаются все крючки.

Не могли бы вы объяснить мне, как это делается?

Предположим, у вас есть массив имен классов objc, функций C/C++, фреймворков и dylibs, в качестве использования строк, которые вы хотели бы обнаружить. Это простое решение. Вы можете открыть файл tweak и просто просмотреть его для любых совпадений. Поскольку настройки обычно не очень велики, это не должно занимать много времени. И есть более трудное решение. Используйте dyld или любой другой API для разбора секций mach-o, чтобы найти импортированные символы и строковые литералы, а затем выполнить поиск по ним для любых совпадений.

+0

Спасибо, пожалуйста, прочитайте мой ответ ниже Я достиг предела персонажа (: – user4397138

0

Я не уверен, что это отвечает на ваш вопрос с пользовательской стороны, но если вы делаете настройку, вы можете добавить XXX_CODESIGN_FLAGS = -Sentitlements.xml в свой файл Makefile, чтобы добавить права, описанные в entitlements.xml.

+0

Благодарим вас, возможно ли реализовать скрипт, который обновляет набор предопределенных прав; автоматически (при установке новой настройки) или вручную через терминал; путем выбора пакетов и исправления Makefile, чтобы включить инструкции «xx said». – user4397138