C语言 从目标文件获取源

o75abkj4  于 2023-06-21  发布在  其他
关注(0)|答案(6)|浏览(114)

有没有什么方法可以在C中通过使用目标文件来获取源代码?
例如我有一个源代码simple.c
cc简单. c
现在我有一个. out(对象文件)。通过这个A. out是否可以得到源?
simple.c代码

iezvtpos

iezvtpos1#

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

uqjltbpv

uqjltbpv2#

有许多有用的工具可以从可执行文件中检索信息。它们都不能给予原始源代码(正如其他用户指出的那样,C语言是不可能的),但是你可以尝试一些逆向工程工具。我最喜欢的是:

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

使用第一个,您实际上可以获得所有导出的符号及其相关的汇编可执行代码(显然,这仅适用于.text部分)。第二个是旨在与英特尔架构,但你将能够分析每一个可执行文件,并获得有关ELF节和符号的信息。

56lgkhnf

56lgkhnf3#

您正在寻找的程序的单词是“disassembler”(将机器语言中的.out转换为汇编语言)和“decompiler”(将汇编语言转换为C语言,正如Dacav所解释的那样,这要困难得多,结果永远不会令人满意)。
但使用网络搜索引擎与这些词可能会产生结果。

yeotifhr

yeotifhr4#

没有
通过逆向工程(阅读反汇编),可以重建逻辑,但变量名,注解等。通常会丢失。

pieyvz9o

pieyvz9o5#

如果您使用的是Linux,请使用gdb
$gdb a.out
(gdb)list

x9ybnkn6

x9ybnkn66#

如果你使用的是linux,你可以用命令字符串提取可执行文件中的字符串。

相关问题