2020 · 会议论文
Egalito:与布局无关的二进制重编译
Egalito: Layout-Agnostic Binary Recompilation
Egalito 对去除符号的 x86-64 与 ARM64 二进制进行静态重编译,借助位置无关的可执行文件和库所携带的元数据,恢复完整的反汇编,使每一处代码与数据交叉引用都成为显式链接。其与布局无关的中间表示 EIR 贴近机器码,因此重新生成的输出可预测,同时提供更高层的视图用于分析;对于没有元数据的跳转表,则借助数据流分析推断。由于不受原始布局约束,工具可以自由移动或改写代码;作者构建了九种工具,包括由 Egalito 变换自身的持续代码随机化、retpoline 防御以及 Intel CET 的软件模拟。作者报告,在来自 172 个 Debian 软件包的 867 个可执行文件与库中,有 866 个的跳转表与编译器给出的真实结果一致;变换后的 149 个软件包中有 90 个通过全部测试;在 SPEC CPU 2006 上性能提升 1.7%。
研究范围与局限
Egalito 依赖位置无关代码提供足够的元数据;除非像作者对 Fuchsia 内核的实验那样提供完整重定位信息,非位置无关的输入不在该方法范围内。跳转表恢复依靠数据流分析和相邻性启发式,因此不能保证反汇编完整;Debian 研究中唯一的失败案例是深度嵌套的跳转表。作者列出的不支持情形包括混淆代码、将数据嵌入代码符号的内联汇编、C++ 异常、符号版本控制,以及 Go 或 V8 二进制。部分软件包测试失败即归因于这些特性。论文发表时 RISC-V 支持尚未完成。columbia/egalito 的主分支自 2020 年 6 月以来没有新提交,因此不代表项目仍在维护。
与本合集的关联
补充静态整体二进制重编译研究:在不保留原始布局的前提下,从恢复出的低层中间表示重新生成可运行程序,与合集中的反编译及提升研究互补。
发表与复核详情
- 发表载体
- ASPLOS 2020
- 发表状态
- 会议论文
- 出版/提交日期
- 2020 年 3 月 9 日
- 日期依据
- 采用 ACM 在 Crossref 登记的印刷出版日期;在线出版日期在元数据说明中单独记录。本条目不采用 3 月 16—20 日的会议日期。
- DOI
- 10.1145/3373376.3378470
ACM 元数据记载印刷出版于 2020-03-09,在线出版于 2020-03-13,页码为 133–147,八位作者顺序如本条目所列;Crossref 将标题拆分为“Egalito”与副标题“Layout-Agnostic Binary Recompilation”。哥伦比亚大学托管的 PDF 是带 DOI 的 15 页 ACM 排版版本。论文称 Egalito 以 GPL v3 发布于 egalito.org,该网站在 2026-10-19 无法通过 HTTP 或 HTTPS 访问,因此 project_url 为 null。所审阅的 columbia/egalito 提交(2020-06-01;仓库最后推送于 2023-08-01)采用 GPL-3.0 许可;其 README 说明支持 x86_64 与 aarch64、RISC-V 支持仍属实验性,并在 Debian 类系统上以 make 与 g++ 构建。本次未构建或运行任何内容。
来源复核于
本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。
一手来源
- https://dl.acm.org/doi/10.1145/3373376.3378470
- https://api.crossref.org/works/10.1145/3373376.3378470
- https://www.cs.columbia.edu/~junfeng/papers/egalito-asplos20.pdf
- README GitHub · columbia/egalito · 修订 c5bccb4
- LICENSE GitHub · columbia/egalito · 修订 c5bccb4