【问题标题】:Can object code be converted back to LLVM IR?目标代码可以转换回 LLVM IR 吗?
【发布时间】:2019-08-30 18:58:53
【问题描述】:

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

【问题讨论】:

  • google://mcsema

标签: c++ assembly llvm llvm-ir object-code


【解决方案1】:

我的意思是,是的,您可以将机器语言转换为 LLVM IR。 IR 是图灵完备的,这意味着它可以计算其他图灵完备系统可以计算的任何东西。在最坏的情况下,您可能拥有 x86 仿真器的 LLVM IR 表示,并且只需执行作为字符串给出的机器代码。

但是您的问题专门询问了将“返回”转换为 IR,因为 IR 结果类似于原始 IR。答案是,不,不是。机器语言代码将是各种优化过程的结果,无法确定优化之前代码的样子。 (箭头在评论中提到了 McSema,它尽了最大努力,但总的来说结果会与原始代码非常不同。)

【讨论】:

  • 是否可以跳过优化过程?对于未优化的代码,LLVM IR 的结果是什么?
  • 这真的取决于代码,以及您对 IR 的预期用途。
猜你喜欢
  • 2012-04-07
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
  • 2014-09-02
  • 1970-01-01
相关资源
最近更新 更多