Farid Zakaria превратил SQLite-файл в исполняемый Linux-бинарник
Разработчик Simon Willison в записи блога от 24 августа 2026 года пересказал приём Farid Zakaria: обычный файл базы данных SQLite можно превратить в рабочий исполняемый файл Linux. Формат SQLite содержит 4-байтовое поле application ID, расположенное в 68 байтах от начала файла; Farid устанавливает в это поле значение SELF, сокращение от "Structured Executable & Linkable Format" (структурированный формат исполняемых и компонуемых файлов). Компоненты обычного ELF-исполняемого файла при этом раскладываются по нескольким таблицам SQLite согласно отдельной схеме. Извлекает и запускает эти части специальный self-exec интерпретатор, написанный на C и опубликованный в открытом доступе. Чтобы такие файлы запускались автоматически, Farid задействует механизм ядра Linux binfmt_misc, он позволяет зарегистрировать бинарный шаблон (сигнатуру SELF по указанному смещению), при обнаружении которого ядро само вызовет нужный интерпретатор для запуска файла. В своей демонстрации Farid использует NixOS. Simon Willison от себя добавляет предположительную команду регистрации через binfmt_misc для систем без NixOS, прямо оговаривая, что не проверял её и приводит как собственную догадку ("I think registration looks something like this").
Ключевые факты
- Farid Zakaria показал способ сделать SQLite-файл одновременно исполняемым Linux-файлом
- 4-байтовое поле application ID SQLite (смещение 68 байт) получает значение SELF, "Structured Executable & Linkable Format"
- Компоненты ELF-исполняемого файла раскладываются по таблицам SQLite согласно отдельной схеме
- Извлекает и запускает эти данные self-exec интерпретатор на C
- Для автозапуска задействован механизм ядра binfmt_misc; демонстрация, на NixOS, команда регистрации для систем без NixOS, непроверенное предположение автора заметки
Почему это важно
Это демонстрация того, насколько гибок формат файла SQLite: его метаданные и структура таблиц позволяют упаковать внутрь совершенно постороннее содержимое, исполняемый код, так, что файл остаётся валидной базой данных и одновременно работает как программа. Приём не связан с ИИ, это чистая системная инженерия и трюк с форматами файлов на Linux.
Кому это важно
Материал адресован системным программистам и инженерам, работающим с внутренним устройством Linux, форматом ELF и SQLite: тем, кто интересуется низкоуровневыми трюками с форматами файлов и механизмом binfmt_misc.
Как это применить
Практически приём демонстрируется как self-exec интерпретатор (исходный код на C доступен по ссылке) и схема раскладки ELF-компонентов по таблицам SQLite. Для автозапуска такого файла как исполняемого нужно зарегистрировать бинарную сигнатуру SELF через /proc/sys/fs/binfmt_misc/register, в источнике показан пример для NixOS, а для систем без NixOS команда регистрации приведена автором заметки как непроверенное предположение.
Можно ли доверять
Источник, Simon Willison, известный технический блогер, который ссылается на оригинальную работу Farid Zakaria (код и схема доступны по ссылкам). При этом сам Willison прямо помечает часть материала, команду регистрации binfmt_misc для систем без NixOS, как свою неподтверждённую догадку, а не проверенный факт.
Риски и подводные камни
В источнике не объясняется, зачем создан этот приём и какую практическую задачу он решает, не разбираются вопросы производительности, безопасности или совместимости такого способа упаковки исполняемого кода в базу данных. Команда регистрации binfmt_misc для систем без NixOS не тестировалась автором заметки лично.