Здравствуйте, уважаемые читатели, в этой статье я хотел рассказать вам о модификации системных файлов операционной системы IOS. Нашим подопытным станет iPhone первого поколения, который сейчас считается редкостью, но эта информация будет актуальна и для других устройств Apple. Для тех кто не знает, первый iPhone выглядит примерно так
Для проведения экспериментов нам понадобится сам телефон, поврежденный Jajebreak, программа IFunBox для просмотра и изменения системных файлов, дизассемблер IDA и HEX-редактор.
На моем телефоне установлена iOS 3.1.3, но эти модификации будут работать и на других версиях (возможно).
Я думаю, мы можем перейти от слов к делу.
Доработаем системное приложение Весенняя доска который отвечает за интерфейс, в том числе за разблокировку, рабочий стол и т.д. Подключаем смартфон (не побоюсь этого слова) к компьютеру, открываем программу IFunBox и заходим в каталог Система/Библиотека/CoreServices/SpringBoard.app и скопируйте содержимое каталога на свой компьютер для дальнейшего изучения и модификации.
Здесь мы видим множество файлов .
png, а также папки, где находятся данные локализации, но нас интересует не это.
Нас интересует сам код приложения и этот код находится в файле Весенняя доска .
Запустите IDA и откройте в нем файл.
Весенняя доска , в появившемся окне нажмите ОК и также во всех последующих окнах нажмите ОК.
Через некоторое время анализ кода завершится и нам откроется дизассемблированный листинг.
Как видите, все функции имеют «человеческое» имя типа «класс + имя метода», что очень круто.
Теперь можно приступить к моддингу самого трамплина.
Изменение максимального количества значков на рабочем столе
Как видите, на рабочем столе можно разместить максимум 4 значка по горизонтали и столько же по вертикали, но это ограничение можно изменить и изменить его достаточно просто.Самый простой вариант, конечно, установить твик с компакт-диска, но этот вариант не для нас, будем патчить исполняемый файл для достижения цели.
Откройте функцию «SBIconList maxIconRows».
Весь алгоритм работы этой функции заключается в том, чтобы вернуть цифру 4, это число — максимальное количество иконок на рабочем столе по вертикали и я предлагаю попробовать его изменить, скажем на цифру 5. Для того, чтобы изменить это ограничение нам необходимо узнать смещение инструкции «MOV R0 #4» в файле и делается это очень просто, для этого нам нужно из адреса инструкции 0x4DE18 вычесть 0x1000 и мы получим смещение инструкции в исполняемом файле равно 4CE18.
Откройте HEX-редактор и перейдите к смещению 4CE18.
Байт, который я выделил на рисунке, содержит количество иконок на рабочем столе по вертикали и меняем его значение на 5 и сохраняем.
После сохранения файла перейдите в IFunBox и замените исходный файл.
Весенняя доска на модифицированный, затем перезагрузите телефон и посмотрите на результат. До модификации
После
Вместо цифры 5 можно поставить любую другую цифру.
Теперь изменим количество иконок по вертикали и для этого перейдем к соседней функции « SBIconList maxIconColumns и сделать абсолютно то же самое, что и в прошлый раз.
Давайте изменим количество вертикальных иконок на 6, для этого посчитаем смещение команды, пропатчим файл еще раз и загрузим его на устройство.
Теперь рабочий стол выглядит так
Теперь попробуем сделать так, чтобы значки вообще не отображались
Пользы эта модификация принесет мало, но для получения опыта и просто для развлечения сгодится.Перейдите к функции «SBIconModel isIconVisible».
Эта функция решает, отображать значок или нет, и возвращает соответствующий результат. Если функция решит, что значок необходимо отобразить, то она вернет 1; если решение отрицательное, то 0. Наша задача — настроить функцию так, чтобы она всегда возвращала 0. Откроем режим «Просмотр графика» и посмотрим на функциональную схему.
Обратим внимание на второй блок, а точнее на условный переход после него и куда он ведет.
В конце функции мы видим, что все ветки могут оказаться в двух возможных местах в зависимости от результата.
Тот условный переход, о котором я говорил выше, если условие выполнено, переходит в блок, где регистру R3 присваивается номер 0, а если условие не выполняется, то переход не выполняется и начинаются дальнейшие вычисления по необходимости отобразить значок.
Самый простой способ сделать так, чтобы переход всегда происходил в нужную нам ветку, — изменить команду CMP, а точнее ее аргумент, например, на 2.
Но мы поступим немного сложнее и заменим команду BNE (переход, если условие не выполнено) на команду BEQ (переход, если условие выполнено).
Правда, в данной ситуации мы просто инвертируем условие, то есть теоретически значки, которые должны отображаться, перестанут это делать, а те, которые не должны отображаться, будут отображаться.
Откройте адрес команды BNE (который находится после CMP на рисунке выше) в HEX-редакторе.
Эта команда занимает 2 байта.
Первый — это смещение, к которому нам нужно «перепрыгнуть», а второй — код операции команды, который нам нужно изменить.
Мы меняем код операции команды BNE, который равен 0XD1, на код операции команды BEQ 0xD0, затем сохраняем и загружаем измененный файл на устройство.
На скриншоте ниже показан результат
Почему я решил изучить строение динозавра
О самой первой модели iPhone я мечтал уже довольно давно и только недавно у меня появилась возможность приобрести его, причем в очень хорошем состоянии.После недели использования простого использования мне стало мало и мне захотелось узнать, что находится «под капотом».
Знания ассемблера и опыт реверс-инжиниринга у меня уже были, но все сильно осложнялось практически полным отсутствием документации (даже зарубежной) о внутреннем устройстве IOS, поэтому учиться пришлось методом проб и ошибок.
Если эта статья окажется вам интересной, то я напишу вторую часть, где расскажу еще много интересной информации о модификации прошивки первого iPhone. Теги: #iOS #разработка iOS #iphone #взлом #доступность #обратное проектирование #обратное проектирование
-
Xml-Элементы И Способ Их Создания
19 Oct, 24 -
Сш. Давайте Запомним Пароль.
19 Oct, 24 -
Files.inbox.lv
19 Oct, 24 -
Видео С Митапа Loveqa
19 Oct, 24