формат cherubicsoft

Який формат у файлу AndroidManifest.xml. який знаходиться в .apk-архівах для Android # 'а.

Своєрідний бінарний XML:

Насправді файл складається з набору шматочків (chunks), кожен з яких має невеликий обов'язковий заголовок з 8 байт - два слова по 16-біт і одне 32-біт. Перше слово - тип шматочка, друге - розмір заголовка шматочка, він може включати додаткові дані заголовка, відповідно мінімальний розмір 8 байт. Третє слово - загальний розмір шматочка включаючи дані після заголовка шматочка, мінімальний розмір теж 8 байт. На початку файлу AndroidManifest.xml варто шматочок з типом 0x0003, довгою заголовка шматочка в 8 байт і загальним розміром у весь файл, всі інші шматочки розташовані єдиним списком всередині нього, і, схоже, що більше вкладених один в одного шматочків немає. В інших файлах, інші початкові типи, і можуть бути вкладені шматочки (з принципом "вкладення" до кінця ще не розібрався).

Схематично файл можна змалювати таку картину:

Виявлені і ідентифіковані типи шматочків такі:

0x0003 - Початок файлу (file begin);

0x0001 - Таблиця рядків (string table);

0x0100 - Початок області імені (namespace);

0x0101 - Кінець області імені (namespace);

0x0102 - Початок XML-тега (tag);

0x0103 - Кінець XML-тега (tag).

Неможливо визначити тільки шматочок з типом "0x0180".

У типу "Початок XML-тега" присутній набір атрибутів різних типів даних, я їх позначив так:

0x03000008 - [string] Номер рядка з таблиці рядків;

0x10000008 - [select] Число використовується для вибору зі списку зумовлених констант;

0x11000008 - [integer] Ціле 32-бітове число;

Результатом моїх досліджень стала консольна програма яка перетворює бінарний XML в нормальний текстовий XML, а також дозволяє переглядати структуру файлу. Програма працює як з окремим файлом, так і з перебувають всередині apk-архіву.

Крім самого AndroidManifest.xml в архіві можна прочитати і інші файли того ж формату, наприклад, resources.arsc або xml-файли з підкаталогу "res". Вихідні тексти програми додаються. Сподіваюся скоро хто-небудь повністю розшифрує цей формат.

Командна строка

Щоб обробити окремий XML-файл програму треба запускати так:

Щоб обробити файл всередині APK-упаковки, так:

Якщо не вказати "досліджуваний файл", то за замовчуванням буде взятий AndroidManifest.xml. Замість apk-файлу можна вказати zip-файл, власне apk - це і є zip-архів.

Опції командного рядка

/ Debug - Виведення інформації про структуру шматочків;

/ Pause - Зупинка після роботи програми, щоб консольне вікно не закривалося;

/ Relax - Ігнорування невеликих "помилок" в структурі параметрів XML-тегів при розборі файлу.

Схожі статті