• Уважаемые форумчане! При использовании информации, ресурсов и материалов форума, а после и внедрения данных многолетних наработок в "свои" прошивки, не забудьте при выкладывании на третьесторонних ресурсах указывать ссылку на исходный источник, где вы и почерпнули данную информацию. Соблюдение сего простого правила является признаком хорошего тона и позволит развиваться ресурсу, что впоследствии положительно скажется на всех нас и последующих результатах в создании модифицированных прошивок для наших гаджетов. С уважением, Администрация форума.
>>>Вышла начальная тэстовая утилита z.768 для прошивок на базе MStar чипсэтов <<<

Из чего сделаны наши девченки ???

z.768

Команда форума
Любое фирмваре построено по определенному алгоритму.
Но это касаемо для амбы.
Есть заголовок для фирмваре.
Хейдер.
Далее идут разделы, ну или секции.
В каждой секции свой заголовок.
Для а07 длина заголовка 0х800, для а09 и а12 может отличатся.
Называю плавающим.... т.е. длина хейдера разная.
Для секций длина стандартная = 0х100.
Далее подробно распишу...
 
Последнее редактирование:

z.768

Команда форума
Вот пример для заголовка секции..
Умный поймет.

// заголовок секции
TRomSecHdr = record // равно 0x100
Crc32: DWORD; // контрольная сумма 4 байта
Version: DWORD; // версия = 2 символа, по 2 байта на символ
DateSec: DWORD; // дата = день = 1 байт, месяц = 1 байт, год = 2 байта
// год - 2 старших байта
LengthSec: DWORD; // длина секции 4 байта
MemAddress: DWORD; // Memory адрес 4 байта
FlagSection: DWORD; // флаг 4 байта
MagicConst: DWORD; // константа секции 4 байта CNS_MAGIC_CONSTANT
ZeroBytes: array [1..57] of DWORD; // 224 нулевых байт
end;


dword = 4 байта.
array это массив...

То что вы увидете в кекс редакторе для дворд нужно перевернуть по-байтно наоборот.
01 00 00 00 = 00 00 00 01
Это LE формат.
 
Последнее редактирование:

z.768

Команда форума
Пример привел на основе rom секции.
Ну или rfs.
Как бы самая дружелюбная.
Но самая напичканная.
Фонт, Стрингс и иные файлы... разные форматы пока описывать не буду.
Отдельная тема.
Мы с ребятами все что смогли... все выковырили... Огромное им спасибо.
 
Последнее редактирование:

z.768

Команда форума
Калина всю идеологию ложи себе на сайт.
 
Последнее редактирование:

Вадим С.

Команда форума
Ни чё не понял- я из другого района, но всё ж интересно; почему твоя АЕ для , к примеру, для ХРХ-575 прошивку от Сильвера битрейт находит правильно, а от Лазер- нет? Прошивка от Лазер интересная, но чайнику уже проблема под себя... (Не в тему- потом удали)
 

z.768

Команда форума
Да есть прошки интересные, забыл сказать.
Иногда прошка закрыта xor, вскрывается великолепно.
Случалось когда раздел упакован в gzip.

Вадим С. все по делу... ничего удалять не собираюсь.
Проект АЕ давно закрыт, мне нужно видеть эти прошки.
Желательно стоковые, а не правленные.
 
Последнее редактирование:

z.768

Команда форума
Забыл сказать, в некоторых прошивках есть в конце байта 4.
Что они значат я не понял, наверное глупый.
Без них прошка не льется в рег.
Почему пример привел из Ром-секции ?
Там самое интересное.
Стринг, Битмапс, и т.п. файлы, это отдельная история.
В принципе организацию прошки я расписал, кому не лень, копайте.
Из Стринг я начинал изучать строение прошивок.
... и никогда не имел регика, вот как бы так получилось !!!
Да заголовок прошки для а07 можно понять из АЕ, там вся подробная инфа выкладывается.
Потому расписывать не буду.
 
Последнее редактирование:

z.768

Команда форума
Далее по ром-секции...
пример из исходников...
есть два типа информационного заголовка.

//..............................ROM TYPE 1....................................//
// информационный заголовок (количество файлов и константа)
TRomSecInfoType_1 = record // равно 0x800
RomFileCount: DWORD; // количество файлов в секции Rom
RomSecConst: DWORD; // CNS_ROM_SECT_INFO = $66FC328A
RomReserved: array [0..2039] of Byte; // заполнен FF-значениями
end;

// имена файлов Rom секции
TRomFileNameType_1 = record // равно 0x80
NameFile: array [0..115] of Byte; // длина имени файла = 116 байт
OffsetFile: DWORD; // стартовый адрес начала файла + 0x100 байт RomHeader
LengthFile: DWORD; // длина тела файла
ConstFileName: DWORD; // CNS_END_NAME_FILE = $2387AB76
end;
TArrRFN_1 = array of TRomFileNameType_1;

//..............................ROM TYPE 2....................................//
// информационный заголовок (количество файлов и константа)
TRomSecInfoType_2 = record // равно 0x80
RomSecConst: DWORD; // CNS_ROM_SECT_INFO = $66FC328A
RomFileCount: DWORD; // количество файлов в секции Rom
end;

// имена файлов Rom секции
TRomFileNameType_2 = record // равно 0x4C
NameFile: array [0..63] of Byte; // длина имени файла = 64 байта
LengthFile: DWORD; // длина тела файла
OffsetFile: DWORD; // стартовый адрес начала файла + 0x100 байт RomHeader
Crc32File: DWORD; // Crc32 файла
end;
TArrRFN_2 = array of TRomFileNameType_2;
 

z.768

Команда форума
Итог...
Заголовок секции ->
- > информационный заголовок - >
- > перечисления имен файлов (имя, офсет, длина) - >
... ну и тела файлов.

и небольшое отступление, иногда наблюдал где вместо константы присутствует crc32
ROM TYPE 2
Это кенвудовские прошивки.
 

z.768

Команда форума
cmd55 спасибо.
Не шли лайки, все нормально.
Очень мало кто воспользуется этой инфой - это их право.
Если, да и вообще распишу стринг и битмапс из ром раздела и многое иное...
... ну если кому есть интерес !
 

On-Line статистика

Пользователи онлайн
1
Гостей онлайн
6
Всего посетителей
7