用途:该技能聚焦把二进制可执行文件提升(lift)为 LLVM IR,从而对既有二进制进行分析、变换与重编译。典型流程为:二进制 → 反汇编 → IR 生成 → 优化 → 分析/重编译。可服务于静态与动态分析、反混淆与漏洞研究、代码重编译与优化、跨架构翻译。
主要能力与框架:生产级工具包括 RetDec(带 C 输出、多架构)、McSema(x86/x64 到 LLVM IR、函数恢复)、revng(基于 QEMU、多架构)、reopt(强调正确性与形式化方法)。研究/专用工具包括 Rellume(面向 JIT 的快速 x86-64 提升)、fcd、bin2llvm、llvm-mctoll。语言相关转换包括 llvm2c、llvm2cranelift、Leaven(LLVM IR 到 Go)、masxinlingvonta(JVM 字节码到 LLVM IR)。
实现技术:涉及指令语义翻译(如将 x86 ADD 翻译为 LLVM IR 并更新 CF、OF、SF、ZF 等标志位)、控制流恢复(线性扫描、递归下降、推测性反汇编、机器学习识别函数边界)以及间接控制流处理(值集分析 VSA、符号执行解析跳转目标、类型恢复重建虚表)。可结合 Triton 符号执行引擎,处理指令并提取 AST 再转为 LLVM IR。
反混淆与动态提升:可将混淆二进制提升到 LLVM IR 后应用优化遍(如 DSE、GVN、常量传播、指令合并、循环简化)及自定义遍简化特定混淆模式,再重新生成代码;也可用于 VMP/VM handler 恢复。动态二进制提升包括运行时翻译(Instrew、QBDI、binopt)与 JIT 重编译(基于剖析的提升、热路径检测、推测优化)。
最佳实践与限制:需处理字节序、调用约定与 ABI 差异;准确建模全局/栈变量内存布局;处理库调用与系统调用;通过对比原始与提升代码的执行轨迹进行验证;支持增量提升。
更多细节与最新资源可从 https://raw.githubusercontent.com/gmh5225/awesome-llvm-security/refs/heads/main/README.md 获取,其中包含 LIFT 部分的工具清单及相关论文与文档。具体安装命令、收费与平台信息暂未提供。