34

我有一个停止工作的旧 DLL (log2vis.dll),我想看看它内部使用了哪些对象。
DLL 是用 C++(不是 .NET)编写的。是否有可以反编译/反汇编 C++ 文件的工具?

4

6 回答 6

33

这可能是不可能的,或者至少非常困难。DLL 的内容(很多)不依赖于它是用 C++ 编写的;都是机器码。该代码可能已经过优化,因此原始源代码中存在的许多信息都消失了。

也就是说,这里有一篇文章介绍了很多关于这样做的材料。

于 2009-08-24T12:51:53.517 回答
13

Hex-Rays 反编译器可能是该领域最好的!

于 2009-08-24T16:26:54.377 回答
9

我认为 C++ DLL 是一个机器代码文件。因此反编译只会产生汇编代码。如果您可以阅读并从中创建 C++,那么您就可以开始了。

于 2009-08-24T12:52:22.237 回答
5

没有我知道的反编译器。 W32dasm是很好的 Win32 反汇编程序。

于 2009-08-24T12:53:34.720 回答
4

实际上没有任何方法可以做到这一点,因为大多数有用的信息在编译过程中都被丢弃了。但是,您可能想查看此站点,看看是否可以找到某种从 DLL 中提取某些内容的方法。

于 2009-08-24T12:52:24.157 回答
-1

最接近你做这种事情的是dissasembler或调试信息(Log2Vis.pdb)

于 2019-08-16T23:38:19.113 回答