Как стать автором
Обновить

Комментарии 12

Позволю себе крохотное пожелание по FB2 ридеру: позвольте юзеру регулировать расстояние между строками; иногда это здорово снижает нагрузку на глаза.
Никогда не использовал колибри, но каждый раз с удовольствием читаю список изменений :)
Привет коллегам.

Господа, пару лет тому назад я реализовал внутри ядра Фантома модуль поддержки API Kolibri OS. Но по документации понятно совсем не всё, и некоторые части API работают неидентично оригиналу. Плюс — нет сишного исходника для распаковщика приложений, поэтому загрузчик ест только распакованные исполняемые файлы. Но — некоторые программы работают.

Если бы в команде Колибри нашёлся кто-то, кто готов помочь доработать эту подсистему, наверное, было бы здорово. Если кому-то идея переносимой на другие платформы Колибри кажется интересной — дайте знать.

Код здесь
lzma декодер из 7z должен справиться. Первый dword сигнатура 'KPACK', второй — размер распакованного файла. Все остальное это данные сжатые lzma.
Спасибо. Вот такой?

Судя по тому, что он у меня в дереве лежит, но пакованные программы не грузятся, что-то с ним не то… :(

Сигнатура — 'KPCK'?

О. Он даже подключен, оказывается. Здесь.
У меня структура заголовка пакованного файла выглядит так:

struct kolibri_pkck_hdr
{
    char                ident[4];
    u_int32_t           unpacked_size;
    u_int32_t           flags;
};

Неверно? Нет там флагов?
Да, структура такая. Флаги есть, похоже они часть заголовка файла. Распаковщик их проверяет.
Распаковщику-то с какого смещения вход отдавать? +8 или +12, после всей этой структуры?
Скорее всего +12.
Перед передачей LZMA-распаковщику нужно дописать впереди нулевой байт (LZMA-поток всегда начинается с нулевого байта) и, возможно, bswap-нуть первый dword (а может быть, и нет, не помню точно). Кроме того, в зависимости от флагов после LZMA-потока могут быть данные для постпроцессинга (instruction-relative offset <-> absolute address; постпроцессинг для распаковщика, препроцессинг для упаковщика) E8/E9 и 0F 8x.
Может, спека есть на это всё?
Нет. Те, кому нужно, просто берут готовый код.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий