【发布时间】:2012-02-22 18:55:32
【问题描述】:
我知道这个问题可能很奇怪。但我只想知道是否可以将任何可执行文件(.exe 或 a.out)转换回源代码?有什么工具吗?如果不是,请忽略这个问题。
【问题讨论】:
标签: c debugging unix operating-system
我知道这个问题可能很奇怪。但我只想知道是否可以将任何可执行文件(.exe 或 a.out)转换回源代码?有什么工具吗?如果不是,请忽略这个问题。
【问题讨论】:
标签: c debugging unix operating-system
Boomerang 可能会有所帮助。
【讨论】:
没有“源代码”之类的东西。该程序可以以多种方式组装。 (例如,它可以用 Pascal、COBOL 甚至直接用机器代码编写。)你能做的最好的事情是“反汇编”程序,即将机器代码转换为可读的汇编助记符。如果您对编译器的实现方式有深入的了解,那么您很可能能够识别常见的模式并推断出某种等效的 C 代码。
有一些工具可以使用基于此类知识的启发式方法并自动执行该过程。我不知道任何开源的,但我认为IDA Disassembler 朝着这个目标迈进了一步。
【讨论】:
Hh,如果你的意思是转换回汇编源代码,是的,有很简单的方法可以做到这一点(在 linux maxhines 上):objdump --disassemble <binaryname>,你当然可以使用一些窗口disassembler。
你的意思是原始C源代码,有两种选择。当您尝试反转使用调试符号(例如gcc -g ...)编译的应用程序时,您应该能够通过调试器获取源代码(在 gdb 中它会是这样的命令:disassemble /m)。
如果你不使用它们......你应该在谷歌上搜索reverse engineering :)
【讨论】: