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

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

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 статистика

Пользователи онлайн
0
Гостей онлайн
29
Всего посетителей
29