有没有一款反编译器可以在Visual Studio 6 C++上使用?

5

我有一个项目需要修复,之前负责的人已经离职了。他在软件工程方面违反了所有基本原则,比如没有使用源代码控制、没有在对源代码进行更改之前备份等。

现在我需要对已经投入使用的应用程序进行修改,但是我没有原始的源代码,只有可执行文件。我需要一款反编译工具,可以反编译Visual Studio 6 C++应用程序,并提供某种类型的源代码。有谁有什么想法吗...


2
你有没有考虑使用21世纪的编译器? - AshleysBrain
2
理解反编译程序通常不是一项简单的任务。如果源代码已经完全丢失,尝试逆向工程现有可执行文件可能实际上不如重写程序(并使用适当的源代码控制)更值得。特别是如果这是您的公司将来需要维护的程序,则应考虑这一点。 - TheUndeadFish
2
如果你的公司没有源代码,不要责怪程序员,而是责怪他以前的老板,如果他仍然在你的公司里! - Doc Brown
谢谢给予意见的每一位。现在我已经有了一个好的方向。 - Mark
3个回答

8

这里有来自Hex-Rays的反汇编器:https://www.hex-rays.com/products/decompiler/

它能够将汇编代码转换为C代码,虽然价格相对较高,但非常好用。

另外需要注意的是,该软件已经与他们家著名的反汇编程序IDA Pro结合使用,IDA Pro已经能够显示很多信息,再加上反汇编器,可以更轻松地反向代码。


1
+1 IDA Pro + Hexrays 因为它利用对win32的知识帮助反编译并输出更好的代码。 - Greg Domjan
虽然价格昂贵,但如果它能够很好地完成工作,那么可能是值得的。我不知道为什么ARM版本比x86版本多1美元(或1欧元)? - Michael Burr
在德语中,这可能有一个好笑话:“他们想把我们变成ARM芯片了”,但翻译成英文就不那么好玩了。我唯一能想到的原因是他们想表明这不包括在内,两者价格不同(只是个猜测)。 - Vinzenz
我所看到的都是X86类型的编码,如push mov。我想反编译exe文件,但不知道源代码语言。在加载时,我选择了可移植可执行文件和元PC。我看到了启动函数,但它是汇编语言类型的。有人能帮我查看实际的C或C++代码吗? - Sarveshwar

4
我曾使用RecStudio (rec22)和IDAPro尝试反编译一个C++项目,但它们可能不足以完成我的工作,除非我找到了该程序基于的演示项目,这样它们提供的信息就足够让我做出类似的项目了。
最后,我还在编译我认为匹配的代码并检查我在反编译器中得到相同的结果。
祝好运。

3

反编译到什么程度 - 汇编语言?

没有任何工具可以从可执行文件中生成有意义的C代码。


1
正如Vinzenz所指出的那样 - 至少有一种产品可以做到这一点(公平地说 - 我不希望生成的代码与原始的C++源代码一样有意义)。 - Doc Brown
@Doc Brown:通过分析并编写注释,重命名变量和函数名称的工作可以带来很多收益。只需观看我链接页面上的简短反编译演示即可了解。当然,它不会像原始代码一样,但这基本上就是“翻译中失去的东西”;-) 但仍然令人惊叹它能够产生什么样的结果。 - Vinzenz
这相当令人印象深刻(至少对于他们展示的例子来说),反编译器曾经比阅读汇编代码还要糟糕。 - Martin Beckett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接