【问题标题】:Decompiling an ARM asm back to C将 ARM 汇编反编译回 C
【发布时间】:2011-03-12 23:35:38
【问题描述】:

几年前我编写了一个不错的 ARM 汇编程序例程,多年来它在其设计的 ARM 嵌入式系统上完成了出色的工作。现在,是时候将它移植到非 ARM 系统了,我想知道是否有工具或某种方法可以获取我原来的 ARM 汇编源代码并从中获取基本的 C 文件。我可能在几天内就可以自己完成,但如果有一个起点就好了。如果应用程序或方法是免费的,那就更好了:)

有什么建议吗?

【问题讨论】:

  • 我怀疑你会有很多运气。反编译器可以通过稍微了解编译器如何从代码生成程序集来“作弊”。由于您的代码是手写的,因此它的行为可能与编译器生成的代码所期望的有所不同。

标签: c assembly arm decompiler


【解决方案1】:

用于 IDA Pro 的 Hex-Rays Decompiler 插件可以反编译 ARM。它有点贵,所以如果你只需要一个例程,它可能不是最佳选择。

【讨论】:

  • 是的,对我需要的东西来说太过分了(ed)。我最终只是按着项目符号并手动反编译它。
【解决方案2】:

不幸的是,我不知道这样的工具...会很好...; )

所以我能给出的唯一建议就是专注于逻辑。

您编写了汇编代码。所以你知道编码应该做什么。将其转换为 C 代码应该不会那么难,即使使用 ARM 汇编也是如此。

我的意思是将 C 移植到 ARM 程序集可能是一项艰巨的任务。但是对于反向选项,如果你知道代码逻辑,并且如果你知道如何编写C,应该就可以了......

创建 C 结构以简化您正在使用的内存区域。关于算法,它们不会改变。只需借助一些结构等将您正在做的事情从汇编转换为 C...

对不起,我可以给你这样的工具...

祝你好运:)

【讨论】:

  • 这有点像我想的。如果没有其他人找到更好的东西,我将把这个问题留到另一天,然后给你信用:)
【解决方案3】:

您可以使用radare2 反编译器插件 (r2dec),它将 asm 转换为伪 C。但我认为手动转换非常有趣。

【讨论】:

    猜你喜欢
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2021-02-26
    • 2021-08-16
    相关资源
    最近更新 更多