C 将可执行文件转换为代码

C 将可执行文件转换为代码,c,debugging,unix,operating-system,C,Debugging,Unix,Operating System,我知道这个问题可能很奇怪。但我只想知道是否有可能将任何可执行文件(.exe或a.out)转换回源代码?有工具吗?如果没有,请忽略这个问题 可能有帮助。没有“源代码”这样的东西。该程序可以通过多种方式组装。(例如,它可能是用Pascal、COBOL编写的,甚至是直接用机器代码编写的。)您可以做的最好的事情是“反汇编”程序,即将机器代码转换为可读的汇编程序助记符。如果您对编译器是如何实现的有很强的理解,那么您可能能够识别常见的模式并推断出某种等价的C代码 有一些工具使用基于这些知识的启发式方法,并使

我知道这个问题可能很奇怪。但我只想知道是否有可能将任何可执行文件(.exe或a.out)转换回源代码?有工具吗?如果没有,请忽略这个问题

可能有帮助。

没有“源代码”这样的东西。该程序可以通过多种方式组装。(例如,它可能是用Pascal、COBOL编写的,甚至是直接用机器代码编写的。)您可以做的最好的事情是“反汇编”程序,即将机器代码转换为可读的汇编程序助记符。如果您对编译器是如何实现的有很强的理解,那么您可能能够识别常见的模式并推断出某种等价的C代码

有一些工具使用基于这些知识的启发式方法,并使过程自动化。我不知道有什么开源的,但我认为它在某种程度上实现了这个目标。

Hh,如果你是说转换回汇编程序源代码,是的,有一种非常简单的方法(在linux maxhines上):
objdump——反汇编
,你肯定可以使用一些windows

你指的是原始C源代码,有两种选择。当您试图反转使用调试符号(如
gcc-g…
)编译的应用程序时,您应该能够通过调试器获得源代码(在gdb中,它将是这样的命令:
disassemble/m


如果你不使用它们。。。你应该用谷歌搜索:)

+1谢谢你![编辑:哦,这个项目看起来相当死气沉沉…]它死气沉沉,但我只是给了它,因为它至少是OP想要的东西。