Заголовок 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 байта нулей.
Вот мой пример: (кодовые группы)
Индификатором для кодовой группы является ещё номер, т.е. он фиксированный.
По моим подсчётам их около 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, получил:
Разбираем:
S3 + 0D + 100800C0 + Данные + ЧС
S3 + 45 + 100800C8 + Данные + ЧС
Меня заинтересовало вот что:
По идее 100800C8 = 100800C0 + 0D. Чёта это равенство не получается.
Следуют вопросы:
1. Либо прошивка собрана не правильно (к сожалению стандартных нет - нет возможности посмотреть это), либо ведётся наложение, а зачем это надо?
2. Почему мы используем 7 CG cвместо 8. Т.е. без CG0 - не разделяем флеш?
3. Зачем выделять этот промежуток?
У кого какие мыли?
Сами данные были уже разобраны в различных темах и выведены результаты:
От 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]
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]
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. Зачем выделять этот промежуток?
У кого какие мыли?