#cross-isa

共收录 1 条相关安全情报。

← 返回所有主题
👥 作者: Tianjiao Huang, Po-An Chen, Nick Baron, Michael Franz

二进制重编译(binary recompilation)是一类直接面向可执行代码进行操作的技术,其目标是把两项重要任务自动化:一是为缺乏源码的遗留二进制补装安全缓解措施(如控制流完整性、地址随机化增强等),二是将二进制从一个指令集架构迁移到另一个指令集架构。然而迄今为止,尚不存在能够可靠地把任意可执行文件完整提升为编译器中间表示(如 LLVM IR)的全自动系统,也不存在能够完全静态、可靠地把非平凡二进制从一种 ISA 翻译到另一种 ISA 的方案。论文指出其根本障碍在于:静态恢复程序的完整控制流图(CFG)在一般情况下是不可判定/不可行的——间接(计算)跳转的目标地址依赖于运行时状态,不实际运行程序就无法确定。现有系统因此普遍采用运行时回退机制:被翻译后的程序必须携带相当一部分翻译执行时(runtime)机器,才能在目标机上正确运行,这既增加了体积与性能开销,也限制了可迁移性,并可能引入新的可信计算基。 本文提出一种完全静态的整程序二进制提升系统,目标机上不需要任何运行时翻译支持。其核心思想是放弃传统的“代码/数据区分”(code/data heuristics)判定:与其尝试精确区分指令字节与数据字节,作者选择把二进制中的每一个字节偏移都视为潜在的跳转目标,以暴力(brute-force)方式对整段二进制做提升,从而构造出一个保守地包含所有可行控制流的“超集 CFG”。对于静态不可解析的计算跳转,则将其规约为一次查表操作——跳转被映射到调度表(dispatch table)中对应的入口,进而指向相应的已翻译控制流路径。这样一来,原本需要运行时解析的间接跳转在静态阶段即被消解,代价是代码体积膨胀与需要去重/优化来收敛派生出的冗余路径。作者实现了一个从 x86-64 二进制到 LLVM IR 的原型重编译器,过程中完全不依赖任何代码/数据启发式规则。为验证通用性,作者借助未经修改的既有 LLVM 后端,完成了全静态的跨架构交叉编译,将结果落到 AArch64 平台,从而证明该提升产物可以作为常规编译器 IR 被下游优化与代码生成流程复用。 论文的主要贡献可概括为三点:其一,提出“暴力提升 + 超集 CFG + 调度表”的完全静态提升范式,把不可判定的间接跳转问题转化为可静态处理的表查找;其二,给出不依赖代码/数据启发式的原型实现,验证了任意字节偏移皆可作为跳转目标的保守策略在工程上可落地;其三,通过 x86-64→LLVM IR→AArch64 的全静态交叉编译链路,展示了该方法的跨 ISA 迁移能力与与现有编译基础设施的良好兼容性。适合二进制分析、逆向工程、程序加固、跨架构迁移及编译器/系统安全方向的研究者与工程师阅读。

💡 推荐理由: 遗留闭源二进制既拿不到源码又常缺安全缓解,跨 ISA 迁移(如向 AArch64 迁移)也长期缺少可靠的静态方案。本文证明可完全静态提升并复用 LLVM 后端落地,对二进制加固、供应链与固件/工控遗留代码治理具有直接的工程参考价值。

🎯 建议动作: 研究跟进:精读论文并评估原型在其目标架构链路(x86-64→LLVM IR→AArch64)上的可复现性与对内部遗留二进制资产的适用性

排序因子: 来自 arXiv 其他板块 (+2) | Community 数据源 (+1) | LLM 评分加成 (+0.6)