代码之家  ›  专栏  ›  技术社区  ›  Pavunkumar

从对象文件获取源

c
  •  16
  • Pavunkumar  · 技术社区  · 15 年前

    有没有办法用C语言中的对象文件来获取源代码?

    例如,我有一个源代码simple.c

    简单的C

    现在我有一个.out(对象文件)。我能查到消息来源吗?

    simple.c代码

    5 回复  |  直到 9 年前
        1
  •  10
  •   Dacav    15 年前

    有许多有用的工具可以从可执行文件中检索信息。它们都不能返回原始源代码(正如一些其他用户指出的,对于c来说这是不可能的),但是您可以尝试一些逆向工程工具。我喜欢的是:

    • objdump(“binutils”包的一部分)
    • hte(debian将其打包为“ht”)

    使用第一个符号,实际上可以获得所有导出的符号及其相对的可执行代码(显然,这只适用于 .text 剖面)。第二个目标是使用英特尔体系结构,但您将能够分析每个可执行文件,并获得有关ELF部分和符号的信息。

        2
  •  45
  •   Jerry Coffin    15 年前

    不。把牛变成汉堡包相当容易。把汉堡包变成活牛,有点难。

        3
  •  1
  •   kennytm    15 年前

    不。

    使用逆向工程(读取反汇编)可以重建逻辑,但变量名、注释等通常会丢失。

        4
  •  1
  •   bortzmeyer    15 年前

    你要找的程序的词是“ disassembler “(将a.out中的机器语言转换为汇编语言)和” decompiler “(正如dacav所解释的那样,将汇编语言转换成c语言要困难得多,而且结果永远不会令人满意)。

    但是,对这些词使用网络搜索引擎可能会产生结果。

        5
  •  0
  •   prabhakaran9397    9 年前

    如果您使用Linux,请使用GDB

    $ gdb a.out

    (GDB) list