将可执行文件转换为代码

时间:2012-01-31 00:54:23

标签: c debugging unix operating-system

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

3 个答案:

答案 0 :(得分:5)

可能Boomerang可以提供一些帮助。

答案 1 :(得分:1)

没有“源代码”这样的东西。该计划本可以通过多种方式进行组合。 (例如,它可以用Pascal,COBOL编写,甚至可以直接用机器代码编写。)你能做的最好的事情是“反汇编”程序,即用可读的汇编程序助记符转动机器代码。如果您对编译器的实现方式有深刻的理解,那么您可能能够识别常用模式并推断出某种等效的C代码。

有些工具使用基于此类知识的启发式方法并自动化该过程。我不知道任何开源的,但我认为IDA Disassembler在某种程度上朝着这个目标前进。

答案 2 :(得分:1)

Hh,如果你的意思是转换回汇编程序源代码,是的,这是非常简单的方法(在Linux maxhines上):objdump --disassemble <binaryname>,你确定可以使用一些窗口{{ 3}}

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

如果你没有使用它们......比你应该谷歌disassembler:)