Подтвердить что ты не робот

Есть где-нибудь, где я мог бы начать программирование MobileSubstrate?

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

Чтобы начать, я бы хотел сделать это только с помощью обычных% крючков. Любой намек, где я мог бы начать?

4b9b3361

Ответ 1

Итак, поскольку я (надеюсь, что я) сейчас далеко от нуба с программированием MobileSubstrate, и увидел этот вопрос как довольно популярный, я решил создать ответ, охватывающий все, что вам нужно знать о предмете, надеюсь, кратко.

Это небольшое введение предназначено для тех, у кого имеет минимальное знание на Objective-C и знает, что он делает.

ПРИМЕЧАНИЕ. Я буду ссылаться на путь установки theos как $THEOS. Это может быть ~/theos, /var/theos, /usr/theos... Да.

Самый популярный способ создания расширений MobileSubstrate, также известный как tweaks, использует Dustin Howett сборник theos. Подробности следуют:

Что такое theos?

Итак, мы должны начать с того, что theos не:

  • Операционная система
  • Греческий Бог
  • Компилятор

И, конечно же, что делает theos не:

  • Обучает программированию кода.
  • Создает твики, не заставляя вас думать
  • Устанавливает всю среду здания и/или устанавливает SDK iOS.

Theos - это кросс-платформенный набор средств разработки для управления, разработки и развертывания программного обеспечения iOS без использования Xcode, в котором представлены:

  • Прочная система построения, созданная GNU Make, что делает его Makefile легко развертываемым через всюду с theos тоже.

  • NIC, система шаблонов проектов, которая создает готовые для сборки пустые проекты для в разных целях.

  • Logos, встроенная библиотека на основе препроцессора директив, предназначенных для создания MobileSubstrate расширение разработки легко и с оптимальной генерацией кода.

  • Автоматическая упаковка. Theos способен напрямую создавать пакеты DEB для распространения в Cydia, самом популярном средстве распространения пакетов на сцене джейлбрейка.

Как установить theos?

  • В OSX: установите IOS SDK и следуйте этим инструкциям.
  • В iOS: установите пакет рекомендуемых инструментов BigBoss из Cydia и запустите installtheos3.
  • В Linux: найдите среднее значение для установки инструментальной цепочки и следуйте этим инструкциям.
  • В Windows: ничего невозможного, но если вы действительно это сделаете, сообщите мне.: P

Как использовать theos?

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

Прежде всего, всегда используйте Theos Makefile Reference. Он охватывает основы создания файла файла theos и включает решение проблем с связями с добавлением рамки или частной структуры в проект.

Теперь вы можете создать свой собственный Makefile с нуля, создать свою небольшую теорию clone/symlink и начать кодирование, но theos делает этот шаг проще. Вы можете просто использовать nic.pl.

Очень простой пример запуска NIC для создания чего-то можно найти здесь. Это очень прямолинейно и позволяет вам сразу программировать.

Теперь, где мы начинаем возвращаться к теме.

Создание твика с помощью функции

Прежде всего, не запускать NIC, когда внутри $THEOS/bin. NIC создаст каталог проекта именно там, где вы его используете, и избегает любого проекта, созданного в $THEOS/bin. Таким образом, вы получите простую ошибку, которой можно избежать, создав каталог проекта где-то достойным.

Запустите $THEOS/bin/nic.pl и выберите шаблон iphone/tweak. Вам будет предложена простая информация, которую вы можете хорошо знать, как ответить, за исключением последнего поля: MobileSubstrate bundle filter.

Поскольку большая часть MobileSubstrate - это не просто проститутка (библиотека, которая переключает исходные методы/функции с вашей), но также загрузчик(часть, которая заставляет ваш крючок вставляться в определенные процессы), вы должны предоставить эту базовую информацию для загрузчика, чтобы узнать, где загрузить вашу настройку. Это поле - это только идентификатор пакета для приложения, в который будет вставлен этот проект.

com.apple.springboard, по умолчанию используется идентификатор пакета для SpringBoard, приложение:

  • iOS Homescreen
  • Пусковая установка/дисплей обычных приложений
  • Строка состояния iOS
  • Обработчик некоторых важных фоновых процессов высокого уровня.

Следовательно, там, где происходит множество настроек, изменение поведения от чего-то столь же тривиального, как запуск приложения, к чему-то вроде того, как выглядит весь пользовательский интерфейс рабочего стола.

Программирование настроек с помощью логотипов

Теперь каталог, созданный NIC, будет содержать:

  • Theos Makefile, где вы будете изменять информацию, связанную с компиляцией
  • Файл control, в котором вы будете изменять информацию, связанную с упаковкой
  • Символьная ссылка (или ярлык) на $THEOS с именем theos/
  • Основной файл кода, по умолчанию Tweak.xm. Он уже добавлен в Makefile для компиляции, поэтому вы можете сразу начать кодирование!

О знании, что делать

Теперь у вас нет исходного кода SpringBoard, и вы не можете догадаться, какие методы перехватывать из ниоткуда. Поэтому вам нужен набор заголовков SpringBoard. Для этого вам нужно использовать инструмент с именем class-dump-z и запустить его в двоичном формате SpringBoard (который находится внутри файловой системы iOS) для получения файлов заголовков, включая все объявления классов и его методы внутри приложения.

Из этого (речь идет о догадках и протоколировании вызова метода), вы можете начать возиться с тем, что хотите в настройке.

Конечно, если вы не подключаете SpringBoard, вы можете использовать class-dump-z так же, как в других двоичных файлах, таких как UIKit, MobileSafari и т.д.

Обратите внимание, что при обращении приложений App Store они будут зашифрованы. Вам нужно будет расшифровать их (к сожалению, мне не разрешено рассказывать вам об этом), а затем просто запустите class-dump-z на них.

При получении личных заголовков

Для подобных пакетов предпочтения требуются заголовки для частных фреймворков, в этом случае заголовки фреймов Preferences. Кроме того, вы получите бесконечные отсутствующие ошибки объявления (как я полагаю, вы могли бы предположить).

Получение их имеет ту же логику, что и предыдущий шаг. Запустите class-dump-z в этом случае двоичный файл Preferences и выбросьте заголовки в INCLUDEPATH. INCLUDEPATH - это то, где компилятор будет искать заголовки, которые вы включаете, например, #include <stdio.h>. Да, stdio.h находится внутри одной из каталогов, которые строят компилятор INCLUDEPATH!

При компиляции с помощью theos Makefile, $THEOS/include считается частью вашего INCLUDEPATH, а это значит, вы можете просто бросить свои сбрасываемые заголовки туда и включить их позже.

(Обратите внимание, что заголовки с разделителями классов не всегда идеальны, поэтому у вас, вероятно, будет несколько ошибок компиляции, связанных с заголовком, которые можно легко устранить с помощью удаления директивы #import или изменения ее или добавив пару деклараций.)

Советы по коду

  • Вы не можете связываться с SpringBoard, поэтому всякий раз, когда вам нужен класс из SpringBoard, вам нужно использовать либо директив Logos %c, либо функцию objc_getClass, как определено в <objc/runtime.h>, чтобы получить ее. Пример: [%c(SBUIController) sharedInstance], [objc_getClass("SBUIController") sharedInstance].
  • Когда вы не знаете, что делает метод или как что-то работает в SpringBoard, попробуйте разобрать его с помощью IDA или других. Я использую IDA Demo (< - noob!) Для моей разборки.
  • Взгляд на пример кода поразительно полезен как для обучения, так и для выяснения того, как что-то работает внутри SpringBoard или других (снова..). У великих людей в GitHub есть проекты, на которые смотрят: rpetrich, chpwn, DHowett, EvilPenguin и, конечно же, путь больше.
  • Чтобы узнать, как SpringBoard и другие работы (...), посмотрите статью класса в iPhone Dev Wiki!

Эпилог

Подождите, где хорошая часть? Где узнать о кодировании в Tweak.xm?

Ну, исходный вопрос был на самом деле. Как запустить программирование MobileSubstrate?. Вы все настроены, надеюсь, со всеми размещенными заголовками, готовыми ввести make и увидеть ваш проект, магически скомпилированный с помощью theos.

Все, что вам нужно сделать, - это теперь на самом деле копаться в заголовках или разборке и переходить на крючок, звонить и т.д.!

Справочник по логотипусодержит точно, как подключить и использовать другие функции Логотипов, а также статья MobileSubstrate на devwiki также отлично читается.

Удачи. И в случае каких-либо сомнений, не стесняйтесь присоединяться к каналу IRC irc.saurik.com #theos. Это отличный способ обсудить темы, связанные с теосом, и задать вопросы. Я в основном там, вместе с другими очень умными людьми;)

Ответ 2

Вы ищете Theos, созданный DHowett.. Theos позволяет вам делать хитрости, но это не дает вам все, что вам нужно. Вы не получаете каждый заголовок для iOS, поэтому вы должны использовать класс-dump-z для фреймворков /private -framework из SDK iOS. Начните здесь: http://iphonedevwiki.net/index.php/Theos/Getting_Started или присоединитесь к irc.saurik.net #theos для получения дополнительной справки. Вы также можете посмотреть мои проекты, которые используют theos: https://github.com/evilpenguin

Ответ 3

Звучит так, будто вы ищете теосов. Посмотрите это, это должно помочь вам начать работу.