Перейти к содержимому
Экосистема AI Vibe

Новости

SQLite-файл на Linux можно запустить как бинарник через SELF

Редакция 24 августа 2026 г.

SQLite-файл с маркером SELF на 68-м байте ядро Linux запускает как бинарник через binfmt_misc и интерпретатор self-exec.

Farid Zakaria описал способ сделать файл SQLite на Linux запускаемым бинарником: на 68-м байте заголовка ставят четырёхбайтовый application ID со значением SELF, а части ELF хранят в таблицах базы по авторской схеме — не в обычных секциях исполняемого файла.

Интерпретатор self-exec на C вытаскивает оттуда нужные сегменты и запускает их. Ядро узнаёт такие файлы через binfmt_misc: если в заголовке совпадает маска, Linux передаёт запуск внешнему обработчику вместо попытки исполнить файл напрямую.

Из чего складывается SELF

  • application ID SELF — маркер Structured Executable & Linkable Format на 68-й позиции заголовка SQLite
  • ELF в таблицах — компоненты образа разложены по схеме автора
  • self-exec — интерпретатор собирает и исполняет сегменты
  • binfmt_misc — ядро вызывает интерпретатор при совпадении маски

Farid настраивал маску на NixOS; на других дистрибутивах достаточно одной строки для /proc/sys/fs/binfmt_misc/register:

printf '%s\n' ':self:M:68:SELF::/usr/local/bin/self-exec:' \
  > /proc/sys/fs/binfmt_misc/register

Источник: Your executable is a SQLite database.