Имеется устройство, для простоты будем считать что это сотовый телефон. По неподтвержденным данных оно использует операционку Nucleus. Для этого устройства имеется языковой пакет. Он представляет из себя бинарный файл, объемом около 500 Кбайт в юникоде. Начало этого файла привожу в картинке.
Требуется корректировка некоторых текстовых фраз. Пока это удается сделать лишь подставляя новые слова длина которых не превышает старые. Слова располежены друг за другом через нули, это видно на второй картинке. После подмены байт, приходится корректировать в другом месте чтобы контрольная сумма была неизменна. Где она находится и как считается мне не известно. Иначе виндовая софтина не хочет зашивать файл.
В связи с этим первый вопрос. Как устройство определяет начало строки? Если я в середине строки подсуну нули, то как и следует ожидать строка будет выведена до этих нулей. Но таким образом мы одну строку поделили на две и следующая за ней строка выводится корректно. Как-будто устройство хранит в себе фиксированные смещения строк.
Похоже этот файл также содержит информацию о шрифтах, у меня есть несколько файлов для разных устройств. Если зашивать один файл в разные модели устройств, форматирование плывет, но шрифт для этого файла всегда один и тот же в разынх устройствах.
В начале каждого блока с фразами для одного языка есть непонятный для меня набор данных. Он выделен цветным прямоугольником. Может быть это и есть информация о шрифте.