把可执行文件做成 SQLite 数据库:SELF 结构化可执行格式的实验
来源: fzakaria.com — 2026-08-23
概述
作者延续博士论文期间「用 SQLite 取代 ELF 作为可执行文件格式」的执念,在 LLM 时代重新审视并实现了名为 SELF(Structured Executable & Linkable Format)的原型。他指出 ELF 本质上已经是一个数据库——字符串表是字符串驻留、.hash 是索引、段头表是表目录,只是用手工方式重新发明了这些原语。换成 SQLite 后,可执行文件自带自描述 schema、天然可扩展且稳定,还能直接用 SQL 查询动态依赖与符号,无需再为每个解析器重复实现同一套逻辑。
核心要点
- ELF 本质上已经是一个数据库——字符串表是字符串驻留、.hash 是索引、段头表是表目录
- SELF 只需两个表:self_meta 存 ELF 头、segments 存按程序头组织的加载镜像 BLOB
- SQLite 是可自描述格式,能稳定扩展而不破坏既有消费者
- 不再需要 readelf 和 grep,直接 SELECT 就能查符号与依赖
金句
如果你分析过 ELF,内核、ld.so、binutils、LIEF、goblin、readelf 全都在一遍又一遍地重写同一个解析器。
👍 0
👎 0
返回 Lobsters 首页