Flex Analyze by AzT59
Monday, February 20, 2006
Flex Type R373.G.OE.42R
Флекс содержит 80 заголовков типа
B4B4 FFFF C0FF FFFF FFFF FFFF FFFF FFFF
Вопрос№1:
Зачем и почему именно 80?
Ответ№1:
Пока неизвестно.
Смещения данных заголовков 00020000,00040000,00060000,…009E0000 => Увеличиваются на 20000h
Между заголовками расположены таблицы типа:
| P1 | | P2 | | P3 | | P4 |
L1 |0000 0058| |0000 3140| |003C 0000| |FFC0 FFFF|
L2 |0000 03E8| |0000 2D40| |003C 0001| |FFCC FFFF|
L3 |0000 03E8| |0000 2940| |003C 0002| |FFCC FFFF|
L4 |0000 03E8| |0000 2540| |003C 0003| |FFCC FFFF|
L5 |0000 03E8| |0000 2140| |003C 0004| |FFCC FFFF|
L6 |0000 03E8| |0000 1D40| |003C 0005| |FFCC FFFF|
L7 |0000 03E8| |0000 1940| |003C 0006| |FFCC FFFF|
L8 |0000 03E8| |0000 1540| |003C 0007| |FFCC FFFF|
L9 |0000 03E8| |0000 1140| |003C 0008| |FFCC FFFF|
L10 |0000 0080| |0000 10C0| |003C 0009| |FFCC FFFF|
L1= Строка параметров названия(имени) файла.
L2…L10= Строки параметров блоков данных.
P1= Количество байт в блоке HEX(03E8)==DEC(1000).
P2=Адрес начала блока, 2D40h=> Есть смещение от начала файла, перейдя на это смещение получим начало нашего файла.
Заметка №1:
Так как P1[L2]=P1[L3]=03E8h =1000d, а P2[L2]-P2[L3]=400h=1024d;
Следовательно, 18h(24d) байт остались свободными, они заполняются 0xFF.// Умом Моторолу не понять
P3=Насколько я понял этот параметр отвечает на сколько частей разбит файл, в нашем случае это P3[L10]=0009, первая строка не считается так как это ссылка на название файла.
Заметка №2:
Наш файл разбит на 9 частей для его сборки нам нужно последовательно переходить по смещениям начиная с P2[L2], при этом копируя по P1[L2…L9]=03E8h байт в новый файл. Последняя строка говорит нам что в блоке 0009 не 03E8h байт как во всех остальных блоках, а 80h байт поэтому нам следует скопировать именно 80h байт.
Заметка №3
Как вы наверно заметили блоки расположены задом наперёд то есть конец файла(80h байт) расположен по порядку самым первым, а начало (03E8h байт) последним, имя файла также находится позже первого блока перейдя на смещение 3140h вы можете его лицезреть.
P4= Пока неизведанный параметр скорее всего указатель на папку или еще что-нибудь.
Вывод№1:
Файл размером больше (03E8h)1000d байт разбивается на части которые лежат во флексе в обратном порядке, сначала конечный блок, потом промежуточные (если есть), а только потом начало.
Также в самой таблице первый файл из таблицы будет последним в теле флекса и наоборот.(Опять-же умом Моторолу непонять)
Итого: Функцию извлечения из флекса файлов включу в свою прогу «STools_by_AzT59(пока еще функции там нет)», а так как я мало уверен что хватит времени выкладываю мануал. Кто меня опередит плюсики с вас!!!!
Если я в чём -то неправ поправьте, давайте уже добьем его(Flex) до конца!!!
Monday, February 20, 2006
Flex Type R373.G.OE.42R
Флекс содержит 80 заголовков типа
B4B4 FFFF C0FF FFFF FFFF FFFF FFFF FFFF
Вопрос№1:
Зачем и почему именно 80?
Ответ№1:
Пока неизвестно.
Смещения данных заголовков 00020000,00040000,00060000,…009E0000 => Увеличиваются на 20000h
Между заголовками расположены таблицы типа:
| P1 | | P2 | | P3 | | P4 |
L1 |0000 0058| |0000 3140| |003C 0000| |FFC0 FFFF|
L2 |0000 03E8| |0000 2D40| |003C 0001| |FFCC FFFF|
L3 |0000 03E8| |0000 2940| |003C 0002| |FFCC FFFF|
L4 |0000 03E8| |0000 2540| |003C 0003| |FFCC FFFF|
L5 |0000 03E8| |0000 2140| |003C 0004| |FFCC FFFF|
L6 |0000 03E8| |0000 1D40| |003C 0005| |FFCC FFFF|
L7 |0000 03E8| |0000 1940| |003C 0006| |FFCC FFFF|
L8 |0000 03E8| |0000 1540| |003C 0007| |FFCC FFFF|
L9 |0000 03E8| |0000 1140| |003C 0008| |FFCC FFFF|
L10 |0000 0080| |0000 10C0| |003C 0009| |FFCC FFFF|
L1= Строка параметров названия(имени) файла.
L2…L10= Строки параметров блоков данных.
P1= Количество байт в блоке HEX(03E8)==DEC(1000).
P2=Адрес начала блока, 2D40h=> Есть смещение от начала файла, перейдя на это смещение получим начало нашего файла.
Заметка №1:
Так как P1[L2]=P1[L3]=03E8h =1000d, а P2[L2]-P2[L3]=400h=1024d;
Следовательно, 18h(24d) байт остались свободными, они заполняются 0xFF.// Умом Моторолу не понять
P3=Насколько я понял этот параметр отвечает на сколько частей разбит файл, в нашем случае это P3[L10]=0009, первая строка не считается так как это ссылка на название файла.
Заметка №2:
Наш файл разбит на 9 частей для его сборки нам нужно последовательно переходить по смещениям начиная с P2[L2], при этом копируя по P1[L2…L9]=03E8h байт в новый файл. Последняя строка говорит нам что в блоке 0009 не 03E8h байт как во всех остальных блоках, а 80h байт поэтому нам следует скопировать именно 80h байт.
Заметка №3
Как вы наверно заметили блоки расположены задом наперёд то есть конец файла(80h байт) расположен по порядку самым первым, а начало (03E8h байт) последним, имя файла также находится позже первого блока перейдя на смещение 3140h вы можете его лицезреть.
P4= Пока неизведанный параметр скорее всего указатель на папку или еще что-нибудь.
Вывод№1:
Файл размером больше (03E8h)1000d байт разбивается на части которые лежат во флексе в обратном порядке, сначала конечный блок, потом промежуточные (если есть), а только потом начало.
Также в самой таблице первый файл из таблицы будет последним в теле флекса и наоборот.(Опять-же умом Моторолу непонять)
Итого: Функцию извлечения из флекса файлов включу в свою прогу «STools_by_AzT59(пока еще функции там нет)», а так как я мало уверен что хватит времени выкладываю мануал. Кто меня опередит плюсики с вас!!!!
Если я в чём -то неправ поправьте, давайте уже добьем его(Flex) до конца!!!