motofan logo
> 

Заголовок Shx Файла, И Всё что с ним связано.

n0wheremany
сообщение 21.5.2006, 6:35


Прогр@ммер
*****

Группа: Почётные мотофаны
Сообщений: 564
Регистрация: 10.9.2005
Пользователь №: 51 111
Модель телефона: E398

Рейтинг: 341



Заголовок HEX Файла. И Всё что с ним связано.

Сами данные были уже разобраны в различных темах и выведены результаты:

От Vilko:

формат строки:
SxAABBBBBBBBXXXXXXXX....XXYY
где x - тип блока
x=0 - заголовок(начало) блока данных.
x=3 - блок данных
x=7 - конец блока данных.
AA - длина строки данных
BBBBBBBB - абсолютный адрес данных в телефоне.
XX - данные.
YY чексум.

Все числа представлены в HEX формате.

Заголовок HEX файла представляет данные размером 1FEB.

Разделён на несколько частей:
1. 000-0FF Название файла: "P2K Superfile", размером 100 байт
2. 100-11F Непонятно что: "3.00", 20
3. 120-13F Непонятно что: "2.00", 20
4. 140-1BF Дата: "Mon November 14 05:46:01 2005", 70
5. 1C0-30F Наверно прога с помощью чего генерируется SHX "CSF protected UNIX Generates Superfile", 140
6. 310-3AF Непонятно что (Наверно версия проги): "2.20", 90

А теперь самое интересное:

7. 3B0-1FEB Структура SHX файла, т.е. кодовые группы, 1C3B

ВНИМАНИЕ! У мотора своё представление о том, как должно выглядить число: в перевёрнутом виде. Умом мотор ...

Формат заголовка:
1. Количество кодовых групп: 4 байта. Допустим "08 00 00 00" т.е. "00 00 00 08" - 8 код групп
2. Идут сами кодовые группы:
XXXXYYYYZZ..ZZ, где
ХХХХ - 4 байта - абсолютный начальный адресс в телефоне
YYYY - 4 байта - абсолютный конечный адресс в телефоне
ZZ..ZZ - 20 байт - наверно чекксум. Но скорее всего 16 байт - это чексум, а остальное не понятно.

Замечание:
В рассматриваемых мною прошивках у Загрузчика почледние 2 байта в ZZ..ZZ - 00, а у кодовых групп - 0800.
После загрузчика (Он первый в списке CG) идёт 24 байта нулей.

Вот мой пример: (кодовые группы)

Код
[FONT=Impact]Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

000003B0   08 00 00 00 00 00 FD 03  F7 FF FE 03 03 FE F8 00   ......э.чзю..ю°.
000003C0   B1 72 19 E9 00 0C 02 03  01 00 07 E0 C6 C7 00 00   ±r.щ.......р+А..
000003D0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
000003E0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 08 10   ................
000003F0   C7 00 08 10 10 9F D6 4D  00 00 00 B1 00 0C 02 06   А....я+M...±....
00000400   FF FF 0E 30 54 8C 08 00  C8 00 08 10 FF FF CF 10   зз.0TЮ..+...ззМ.
00000410   10 9F D6 4D 00 00 00 B1  00 0C 02 06 FF FF 0E 30   .я+M...±....зз.0
00000420   93 FB 08 00 00 00 14 11  FF FF FD 11 B4 B4 FF FF   Фы......ззэ.ЫЫзз
00000430   C0 FF FF FF FF FF FF FF  FF FF FF FF DB C2 08 00   КзззззззззззЯР..
00000440   00 00 04 10 FF FF 07 10  10 9F D6 4D 00 00 00 B1   ....зз...я+M...±
00000450   01 0C 02 06 FF FF 0E 30  C0 95 08 00 00 00 F4 10   ....зз.0КТ....ф.
00000460   FF FF 13 11 10 F4 00 10  00 00 00 B1 01 0C 02 06   зз...ф.....±....
00000470   FF FF 0E 30 30 8D 08 00  00 00 00 00 00 00 00 00   зз.00Н..........

00000590   00 00 D0 10 FF FF F3 10  00 00 00 00 00 00 00 00   ..+.ззу.........
000005A0   10 D0 00 1C 00 00 00 B1  7E 6C 08 00 00 00 00 00   .+.....±~l......

000005E0   00 00 00 00 00 00 FE 11  FF 07 FE 11 11 FE 00 10   ......ю.з.ю..ю..
000005F0   00 00 00 B1 01 0C 02 06  FF FF 0E 30 2C 72 08 00   ...±....зз.0,r..[/FONT]



Индификатором для кодовой группы является ещё номер, т.е. он фиксированный.
По моим подсчётам их около 250 с копейками.

Свой пример с 8 CG я Разобрал в SHXCoDec и получилось 7 файлов: Загрузчик, CG1, 2, 3, 4, 15, 18.
Но должно получиться 8. Решил разобраться:
Прошёлся поиском по HEX редактору с S0 (выше сказано что такое) и к моему удивлению их было 7.
Методом исключения установил что "лишним" мгут быть промежутки:
10080000-100800С7 100800С8-10CFFFFF

Как известно 10080000-10CFFFFF это Флеш.

Пробовыл разобрать SDL. Получает 8 файлов: CG 0,1,2,3,4,15,18

Посмотрел что находится данных SHX, получил:

Код
[FONT=Impact]Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

0004A1C0   53 33 30 44 31 30 30 38  30 30 43 30 46 46 46 46   S30D100800C0FFFF
0004A1D0   46 46 46 46 31 31 46 45  30 30 30 30 30 46 0D 0A   FFFF11FE00000F..
0004A1E0   53 33 34 35 31 30 30 38  30 30 43 38 30 30 30 30   S345100800C80000
0004A1F0   30 30 42 31 30 31 30 43  30 32 30 36 46 46 46 46   00B1010C0206FFFF
0004A200   30 45 33 30 34 35 36 31  35 32 37 39 30 30 30 30   0E30456152790000
0004A210   30 30 30 32 31 30 39 45  33 42 34 37 42 35 46 38   0002109E3B47B5F8
0004A220   31 43 30 34 31 43 30 45  31 43 31 35 38 38 33 37   1C041C0E1C158837
0004A230   34 38 42 44 37 38 30 30  32 38 30 42 44 31 30 39   48BD7800280BD109
0004A240   32 30 37 30 38 30 32 30  38 38 32 30 30 37 34 30   2070802088200740
0004A250   44 35 30 31 32 30 44 30  38 30 32 30 32 30 37 30   D50120D080202070
0004A260   38 30 32 30 45 30 33 32  34 38 42 37 46 45 0D 0A   8020E03248B7FE..[/FONT]


Разбираем:
S3 + 0D + 100800C0 + Данные + ЧС
S3 + 45 + 100800C8 + Данные + ЧС

Меня заинтересовало вот что:
По идее 100800C8 = 100800C0 + 0D. Чёта это равенство не получается.

Следуют вопросы:
1. Либо прошивка собрана не правильно (к сожалению стандартных нет - нет возможности посмотреть это), либо ведётся наложение, а зачем это надо?
2. Почему мы используем 7 CG cвместо 8. Т.е. без CG0 - не разделяем флеш?
3. Зачем выделять этот промежуток?


У кого какие мыли?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить

Сообщений в этой теме

Заголовок Shx Файла, И Всё что с ним связано. · Ломаем и строим! · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Текстовая версия Сейчас: 12.7.2025, 8:09

Форум живёт: 8080 дней