Образ Android


  Образ       Файлы       GPT     Разделы     RAW  

  super.fex     boot-resource.fex     boot_package.fex     boot0_sdcard.fex     cardscript.fex     cardtool.fex       split_xxxx.fex       fes1.fex  

Файл split_xxxx.fex

Содержимое этого файла лежит в самом конце загружаемого файла boot-resource.fex.


a1sp9maKde37ee6c-6dc4-4d74-86f0-db32116efb53e0e40ccf- 7a66-406b-88c3-415b4a62a8f7777622ab-6bd0-464f-9da5- 4cc203e855ea8ce5671f-e8b5-442e- 9300-2ee6836c538aabf5f481-c961-4895-8245- 631f74851d0c2bbb4229-55a8-4929-a165-3f406f0ee441ab5d09a9- c4dc-44bb-a175-cfb7c978a062329ea51e- 1ddc-44ff-ac09-9ef7b64e0c52a712e47d-13f7-4490-9fea- bdcd587b8a4a5ed4d4e6-0ba3-45c5-a778- 3232a42d4d960a9b7466-d7b3-4087-b8ff- c51763b852a50cd78bb6- a6d5-43a8-8661-fb91abd346433e8a86ee-711e-49c1-ad54- b59dd01fe513e22b0d8b-647f-4417-a115-9806c5d64eec

(в исходном файле пробелов и разрывов строки нет)

На самом деле, это копия файла сигнатуры magic.bin, который записывается в раздел bootloader. В смонтированной файловой системе загруженного андроида этот раздел представляет собой диск FAT16, на котором файл magic.bin находится в папке /storage/0000-0000/.

Это можно увидеть прямо из консоли:



console:/storage # ls 0000-0000
Alarms Download Music Podcasts fastbootlogo.bmp magic.bin
Android LOST.DIR Notifications Ringtones font24.sft
DCIM Movies Pictures bootlogo.bmp font32.sft

1|console:/storage # cat 0000-0000/magic.bin

a1sp9maKde37ee6c-6dc4-4d74-86f0- db32116efb53e0e40ccf-7a66-406b-88c3-
415b4a62a8f7777622ab-6bd0-464f- 9da5-4cc203e855ea8ce5671f-e8b5-442e-
9300-2ee6836c538aabf5f481-c961- 4895-8245-631f74851d0c2bbb4229-55a8-
929-a165-3f406f0ee441ab5d09a9- c4dc-44bb-a175-cfb7c978a062329ea51e-
1ddc-44ff-ac09-9ef7b64e0c52a712e47d- 13f7-4490-9fea-bdcd587b8a4a5ed4d4e6-
0ba3-45c5-a778-3232a42d4d960a9b7466- d7b3-4087-b8ff-c51763b852a50cd78bb6-
a6d5-43a8-8661-fb91abd346433e8a86ee- 711e-49c1-ad54-b59dd01fe513e22b0d8b-
647f-4417-a115-9806c5d64eec

console:/storage #

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

Можно предположить, что сообщение "Magic complete", которое появляется в самом конце лога прошивальщика PhoenixCard, как-то связано с проверкой этого файла.

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

Возникает вопрос: в какой момент загрузки системы используется этот файл ?
Если учесть, что этот массив строк содержится в файле boot_resource.fex, который записывается в раздел с говорящем названием bootloader и содержит необходимую для работы U-Boot информацию, то логично предположить, что файл magic.bin таже используется на этапе запуска U-Boot, который может прочитать файл на диске FAT16. Хотя, с другой стороны, U-Boot - это универсальный загрузчик и он не может знать о существовании и тем более - проверять содержимое этого файла.

Кроме того, после загрузки системы файл magic.bin доступен в файловой системе, поэтому может быть изменен (случайно или специально) - и что тогда ? Сказано - сделано. Открыл с помощью RootExplorer файл magic.bin, изменил в нём один символ (самый первый), сохранил файл. Систему перезагрузил. Ничего не случилось и не изменилось, система прекрасно загрузилась с варварски испорченным файлом magic.bin. Ну тогда пойдём дальше и совсем удалим этот файл (точнее, переименуем). Результат тот же - система загружается нормально.

При этом, если остановить загрузку на входе в интерфейс U-Boot, то все проделанные ранее операции над файлом magic.bin можно легко увидеть по команде fatls mmc 0 (здесь выделены два переименованных файла) .
=> fatls mmc 0
344813 font24.sft
512 magic.bak
357443 font32.sft
1152054 bootlogo.bmp
512 Mmagic.bin
LOST.DIR/
Music/
Podcasts/
Ringtones/
Alarms/
Notifications/
Pictures/
Movies/
Download/
DCIM/
Android/
190236 fastbootlogo.bmp

6 file(s), 11 dir(s)

Поэтому закрадываются сомнения в нужности и важности файла magic.bin, а тем более, его брата-близнеца split_xxxx.fex. Вполне возможно, что это тоже ещё один обнаруженный атавизм. Уже никто не знает, зачем он нужен, а выбросить жалко (или страшно) - как бы чего не вышло... Ну, или как вариант - он зачем-то нужен для феникс-прошивальщиков.

Для понимания возможного назначения этого файла посмотрим на его структуру. Если преобразовать этот текст в массив, разделив по дефису, то получаем такую картину:


[0] => a1sp9maKde37ee6c

[1] => 6dc4
[2] => 4d74
[3] => 86f0
[4] => db32 116e fb53 e0e4 0ccf

[5] => 7a66
[6] => 406b
[7] => 88c3
[8] => 415b 4a62 a8f7 7776 22ab

[9] => 6bd0
[10] => 464f
[11] => 9da5
[12] => 4cc2 03e8 55ea 8ce5 671f

[13] => e8b5
[14] => 442e
[15] => 9300
[16] => 2ee6 836c 538a abf5 f481

[17] => c961
[18] => 4895
[19] => 8245
[20] => 631f 7485 1d0c 2bbb 4229

[21] => 55a8
[22] => 4929
[23] => a165
[24] => 3f40 6f0e e441 ab5d 09a9

[25] => c4dc
[26] => 44bb
[27] => a175
[28] => cfb7 c978 a062 329e a51e

[29] => 1ddc
[30] => 44ff
[31] => ac09
[32] => 9ef7 b64e 0c52 a712 e47d

[33] => 13f7
[34] => 4490
[35] => 9fea
[36] => bdcd 587b 8a4a 5ed4 d4e6

[37] => 0ba3
[38] => 45c5
[39] => a778
[40] => 3232 a42d 4d96 0a9b 7466

[41] => d7b3
[42] => 4087
[43] => b8ff
[44] => c517 63b8 52a5 0cd7 8bb6

[45] => a6d5
[46] => 43a8
[47] => 8661
[48] => fb91 abd3 4643 3e8a 86ee

[49] => 711e
[50] => 49c1
[51] => ad54
[52] => b59d d01f e513 e22b 0d8b

[53] => 647f
[54] => 4417
[55] => a115
[56] => 9806 c5d6 4eec

Первая сторока - это похоже на заголовок. Далее следует 14 групп, каждая из которых содержит по три двухбайтных строки и одну 10-байтную. То есть текст имеет вполне упорядоченную структуру. Видимо, когда-то использовался некий достаточно простой алгоритм, который быстро и надежно проверял этот массив на корректность. Вряд ли для проверки использовалось посимвольное сравнение сигнатуры образа с этой эталонной подписью. Тогда ничего не мешало бы делать их разными в новых версиях образа.

Скорее всего, это hex-представления (без 0x) неких 16-разрядных чисел, которые когда-то в более ранних версиях загрузчика имели определенный смысл и использовались осмысленно. Вместе с файлом magic.bin на fat16 диске лежат ещё и графические файлы bmp, а также шрифты, т.е. все они используются для отображения чего-либо на экране монитора. Поэтому magic.bin также, вероятно, использовался для какого-то отображения на экране процесса загрузки.

Как вариант, здесь записана китайская мудрость (или фирменный слоган Allwinner) китайскими иероглифами в кодировке юникода...:-)