← 文章 / 数据与数据库
Simon Willison 2小时前 · 2026-08-25 03:25:15 · 0 阅读

你的可执行文件其实是一个 SQLite 数据库

你的可执行文件其实是个 SQLite 数据库来源)Farid Zakaria 介绍了一种巧妙的 Linux 玩法:创建一个既能直接当作可执行文件运行、又是 SQLite 数据库的文件。

诀窍在于把 SQLite 文件格式中位于第 68 字节处的 4 字节 Application ID 设成 SELF,即 Structured Executable & Linkable Format 的缩写。然后按 这套表结构,把 ELF 可执行格式的各个组成部分分别存入不同的 SQLite 表中。

他们写的 self-exec 解释器(C 源码在此)会从中抽取所需的片段并执行。

你还可以借助 Linux 的 binfmt_misc 机制,告诉内核只要遇到符合该特征的可执行文件就自动运行。Farid 是在 NixOS 上实现的,不过不用 NixOS 的话,注册方式大致是这样:

printf '%s\n' ':self:M:68:SELF::/usr/local/bin/self-exec:' \
  > /proc/sys/fs/binfmt_misc/register
原始来源: Simon Willison

评论 (0)