[FAQ] Как работает джейлбрейк?
Если вы хотите увидеть на нашем сайте ответы на интересующие вас вопросы обо всём, что связано с техникой Apple, операционной системой Mac OS X (и её запуском на PC), пишите нам через форму обратной связи.
К нам поступил следующий вопрос:
Сорри за оффтоп.
Напишите пожалуйста статью как происходит процедура джейлбрейка с технической точки зрения, думаю многим будет интерестно почитать.
Ну что то типа того что меняются права на два системных диска этот /
и /private/var с r only на rw. Каким образом это происходит. Про папку CodeSignature в аппах и неподписанный файл Сидии, вследствии чего происходит привязанный джейл. Про ПВНдфу при которой проверка сертификатов отключена.
Потаму что большинство делают джейлбрейк, но понятия не имеют как там и чего происходит.
Про джейлбрейк можно целую книгу сочинить — настолько это комплексный и сложный процесс, особенно на современных версиях iOS, где все простые пути для джейла уже давным-давно закрыты.
Если говорить кратко, то нужно исходить из того, что файловая система iOS-гаджетов включает два раздела: root и media. На медиа-разделе, который занимает основную часть дискового пространства, живут программы, настройки, медиафайлы и прочие пользовательские данные. На root-разделе находятся системные файлы iOS. Root-раздел при старте устройства монтируется как доступный только для чтения, и в этом заключается основная причина стабильности и безопасности системы: испортить системные файлы не может практически никто посторонний.
Джейлбрейк по своей сути сводится к одному: заставить root-раздел монтироваться в качестве доступного для чтения и записи. Это достигается за счёт правки системного файла /private/etc/fstab, где в строке, отвечающей за монтирование системного раздела (/dev/disk0s1 / hfs ro 0 1) флаг ro (read-only) меняется на read-write (rw). Самый трудный вопрос — объяснить, как именно это происходит. Для каждого инструмента джейлбрейка и для каждой прошивки может использоваться своя собственная цепочка используемых эксплойтов. Подавляющее большинство основаны на том, чтобы через протокол, по которому iTunes общается с подключёнными устройствами, сначала послать «правильный» код-запрос, чтобы в итоге получить доступ к оперативной памяти устройства, в которой на момент включения устройства находится загрузчик. Цель номер два — ядро iOS, которое патчится с целью отключения функций, связанных с безопасностью, в частности, проверки подписи загружаемого кода. Затем остаётся поправить упомянутый файл fstab.
После перезагрузки джейлбрейкнутое устройство начинает жить самостоятельной жизнью (если способ пропатчивания загрузчика и ядра допускает возможность обхода проверки цифровых подписей на всех этапах процесса загрузки iOS), либо опять требует подключения к компьютеру и загрузки нужных кэшей (если обойти цифровую подпись на каком-либо из этапов невозможно). В первом случае получается непривязанный джейлбрейк, во втором — привязанный. Затем устанавливаются Cydia, демон AFC2 для доступа к файловой системе с компьютера посредством протокола iTunes, и прочие нужные мелочи.
У нас нет планов подробно расписывать то, как работают эксплойты. Это требует значительных познаний в программировании и будет понятно лишь единицам наших читателей. Если же кому-то это действительно интересно, предлагаем проштудировать портал The iPhone Wiki, где можно найти даже исходники некоторых эксплойтов для джейлбрейка.