Як самому зробити кастомний бандл для pwnage tool - проект appstudio

Що таке бандл? Це пакет, що містить деякі файли, які потім додаються в прошивку, і / або деякі скрипти, які виконуються над її вмістом. Так вже вийшло, що в утиліті Pwnage Tool, призначеної для створення кастомних прошивок, словом «бандл» називаються дві різні речі:

  • ті самі бандли, про які ми будемо говорити сьогодні
  • бандли пропатчіванія ядра і завантажувача iOS, які відповідають за можливість роботи Pwnage Tool з тієї чи іншої версії прошивки

Щоб створювати бандли другого типу, потрібні набагато глибші пізнання в пристрої iOS і в програмуванні. Якщо ви навчитеся їх робити, то можете гордо називати себе iOS-хакером.

Бандли першого типу створюються не в приклад простіше. Знаєте ви чи ні, але з одним таким бандлом ви маєте справу щораз, коли запускаєте Pwnage Tool і створюєте кастомний прошивку. Цей бандл ставить в прошивку Cydia. На ньому найпростіше розглянути пристрій і правила створення бандлів.

Як самому зробити кастомний бандл для pwnage tool - проект appstudio

Відкриється нова папка з начинкою програми. Перейдіть в підпапку / Contents / Resources / CustomPackages. і ви побачите вбудовані в Pwnage Tool бандли:

Як самому зробити кастомний бандл для pwnage tool - проект appstudio

Як самому зробити кастомний бандл для pwnage tool - проект appstudio

В папці files зібрані всі файли, що додаються в прошивку. При цьому файли, що лежать безпосередньо в папці files, потім потраплять в самий корінь диска iPhone / iPod Touch / iPad / Apple TV. Файли, що лежать в підпапках, потраплять в однойменні папки всередині файлової системи пристроїв. Якщо при цьому імена додаються файлів співпадуть з уже наявними, останні будуть перезаписані.

Як самому зробити кастомний бандл для pwnage tool - проект appstudio

Схожим чином влаштовані і все DEB-пакети з Cydia: вони імітують будова файлової системи iOS. Здавалося б, все елементарно просто, але як раз тут і криється найголовніша ловушка.Ето права доступу і власники. В iOS, як і в Mac OS X, права і власники мають ключове значення: якщо ви невірно їх виставите, то в кращому випадку отримаєте виліт тієї програми, яку хотіли поставити, а в гіршому - вб'єте прошивку, і пристрій взагалі не завантажиться.

Остюда випливає важливий рада. Якщо ви щось збираєтеся міняти в файлової системі iOS, то поставте на свій гаджет програму типу iFile з Сідіі або підключіться до пристрою по SSH, щоб дізнатися потрібного власника, групу і права на кожен змінюваний об'єкт. Власник, група і права задаються окремо для кожної папки, підпапки, для кожного файлу - уявляєте, наскільки це геморойні робота?

Задавати потрібні права можна двома способами: через файл Info.plist всередині бандла або через підключається скрипт. Почнемо з файлу Info.plist. Він містить основну інформацію про вашому бандл: ідентифікатор, назва і опис, а також сумісність. Типовий вид файлу Info.plist такий:

Пройдемося по структурі файлу:

  • Name / Description - назва і опис проекту. Ці поля впливають тільки на те, як бандл буде показуватися в Pwnage Tool
  • Size - розмір пакета. Задається в байтах, теж стосується тільки відображення бандла в Pwnage Tool
  • Identifier - унікальний ідентифікатор вашого бандла. Зазвичай ідентифікатори мають вигляд com.company.package. де company змінюють на ім'я розробника, package - на назву пакета. Наприклад, com.appstudio.somethingstrange. Дуже важливо, щоб ідентифікатор не збігся із таким у інших бандлів Pwnage Tool
  • SupportedFirmware - масив, де по рядках зазначаються сумісні з бандлом версії прошивок. Як правильно заповнити ці рядки? Дуже просто: йдете в наш Архів версій iOS. знаходите потрібну прошивку, копіюєте посилання на неї і залишаєте потрібний фрагмент з імені файлу (він позначений червоним):
  • Commands - дуже важливий масив команд над об'єктами. Про нього потрібно розповісти окремо.

Масив Commands дозволяє задати основні операції над файлами бандла, заливають в прошивку. Ось скорочена версія даного масиву з бандла Сідіі:

[Php] Commands


Action
SetOwner
File
Applications
Owner
0:80


Action
SetPermission
File
usr / bin / login
Permission
0755


Action
RunScript
File
space.sh

[/ Php]

Тут зібрані три найважливіші команди, які можуть вам стати в нагоді:

  • SetOwner задає об'єкт (рядок File) і відповідних йому власника і групу (в числовий формі через двокрапку - 0:80, тобто власник root, група admin)
  • SetPermission задає об'єкт і відповідні йому права доступу (в чотиризначного форматі)
  • Action запускає скрипт або програми (на відміну від попередніх двох команд, шлях відраховується від кореня бандла, а не від кореня папки files)

Як бачите, в файл Info.plist можна прописати виклик скрипта (SH-файлу), ну а вписати в скрипт можна все, що завгодно. Створюєте текстовий файл, вбиваєте для нього правильний заголовок:

З наступного рядка можете починати забивати потрібні команди. Наприклад, можете видалити додаток «Камера» (це виключно для прикладу :).

[Php] #! / Bin / bash
rm -rf Applications / Camera.app [/ php]

Як ви розумієте, не повідомляючи термінальних команд Mac OS X скрипти ви не напишете. Основи цієї складно області знань ви зможете знайти в нашому циклі статей Знайомство з терміналом. До речі, там же йде мова і про права доступу.

Після того, як ви распортрошілі бандл і поміняли в ньому все, що потрібно, виправили під себе Info.plist і додали потрібні скрипти, залишається просто закрити папку і скопіювати змінений бандл назад всередину Pwnage Tool, в ту ж підпапку / Contents / Resources / CustomPackages . Потім можна запустити Pwnage Tool ... і вуаля:

Матеріали в тему

Як самому зробити кастомний бандл для pwnage tool - проект appstudio