目标代码可以转换回 LLVM IR 吗?

Can object code be converted back to LLVM IR?

目标代码可以反汇编成汇编语言。有没有办法将目标代码或可执行文件转换为 LLVM IR?

我的意思是,是的,您可以将机器语言转换为 LLVM IR。 IR 是图灵完备的,这意味着它可以计算其他图灵完备系统可以计算的任何内容。在最坏的情况下,您可以拥有 x86 模拟器的 LLVM IR 表示,并仅执行以字符串形式给出的机器代码。

但是您的问题特别询问了关于将 "back" 转换为 IR 的问题,因为 IR 结果与原始 IR 相似。答案是,不,不是真的。机器语言代码将是各种优化过程的结果,并且无法确定优化之前代码的样子。 (arrowd 在评论中提到了 McSema,它已尽力而为,但通常结果与原始代码 非常 不同。)