Koilbri box в Фантоме

Events from the world of KolibriOS and its developers
  • Упаковкой/распаковкой занимается помимо ядра ещё и приложение kpack (kerpack для ядра).
  • Упаковкой занимается kpack, распаковкой - kunpack. Но последняя у меня есть только для винды и без исходиков. Интересно, что kpack весит 14 кил, а kunpack - всего 4.

    Кстати, kunpack импортирует (из MSVCRT.dll) следующие функции:
    Spoiler:
    kunpack.png
    kunpack.png (2.65 KiB)
    Viewed 12951 times
  • Kpack который в Колибри как запаковывает, так и распаковывает приложения, а также упаковывает и ядро. При всем при этом занимает 15 Кб (без упаковки).
    Процедура распаковки намного проще, чем процедура упаковки - достаточно посмотреть в код.
  • Mario wrote:Kpack который в Колибри как запаковывает, так и распаковывает приложения, а также упаковывает и ядро. При всем при этом занимает 15 Кб (без упаковки).
    Процедура распаковки намного проще, чем процедура упаковки - достаточно посмотреть в код.
    Всё равно переписывать её на си и потом ловить баги - немаленькая война. :( Неужели в виндовых эмуляторах не было сишного распаковщика?
  • dzavalishin
    В unpacker.inc старый lzma распаковщик из 7z. Так что если взять оригинальные исходники должно работать.
  • Serge wrote:dzavalishin
    В unpacker.inc старый lzma распаковщик из 7z. Так что если взять оригинальные исходники должно работать.
    Я правильно понимаю, что заголовок KPACK файла - это два инта - KPCK и размер непакованного файла? Идёт ли вслед за этим lzma заголовок? (В нём тоже есть размер несжатого файла...)

    LZMA compressed file format
    ---------------------------
    Offset Size Description
    0 1 Special LZMA properties (lc,lp, pb in encoded form)
    1 4 Dictionary size (little endian)
    5 8 Uncompressed size (little endian). -1 means unknown size
  • Первые два инта точно. Третий содержит байт флагов. На форуме есть пост diamond-а на эту тему. На счёт lzma заголовка не знаю. Это надо упаковщик смотреть.
  • Kolibri/kolibri_sys_dispatcher: Unimplemented Kolibri syscall eax = -239

    = FFFFFFFFFFFFFF11

    что бы это значило? Калькулятор такое позвал. Хотел харакири сделать?
  • Повторить такое удаётся?
  • core/syscall.inc wrote:movzx eax, al
    in code we trust
  • mike.dld wrote:
    core/syscall.inc wrote:movzx eax, al
    Ах, вот оно что! Спасибо.
  • mike.dld wrote:
    core/syscall.inc wrote:movzx eax, al
    Калькулятор надо подправить. В документации сказано, что номер функции нужно передавать в eax, а не в al. Хотя, да, в обработчике прерывания 0x40 есть "movzx eax, al" (но я так думаю это чтобы процесс (а в некоторых случаях и ядро вместе с ним) не падал из-за некорректного вызова, потому что размер таблицы servetable2 = 256*4 байт).

    З.Ы. Если когда-нибудь будет использоваться более 256 функций (не дай бог :evil:) придётся переписывать все программы, использующие этот грязный хряк хак.
  • Если в старших битах гарантированно нули, то не придется, если другое - ну, ССЗБ экономия.
  • Who is online

    Users browsing this forum: No registered users and 3 guests