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, как-то связано с проверкой этого файла. Анализ текста показывает, что строки (кроме самой первой), разделенные дефисом, представляют собой шестнадцатиричные значения (видимо, какие-то хеши). Таким образом, этот массив строк похож на некую сигнатуру (подпись), которую можно использовать для проверки целостности (или корректности) всего образа. Возникает вопрос: в какой момент загрузки системы используется этот файл ? Кроме того, после загрузки системы файл 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) китайскими иероглифами в кодировке юникода...:-) |