7

无论源代码使用何种编程语言,都可以使用什么软件查看 .dll 文件中的源代码?

4

10 回答 10

17

如果它是托管 DLL (.NET),您可以使用ReflectorILDASM等工具打开它,您将看到IL代码。(编辑 2017-02-03:在 7 年多的时间里,.NET 反汇编程序当然取得了很大进步,现在能够生成非常体面的 C# 代码)

如果它是非托管 DLL(本机),那么您就不走运了。你能做的最好的就是加载一个反汇编程序。除非你确切地知道你想去哪里,否则你几乎无处可去。

于 2009-10-22T11:23:06.680 回答
1

对于 .NET,Reflector会这样做;“ Pro”版本(现在是预览版)有一个 Visual Studio 插件,可以让您在 VS IDE 本身中调试大多数托管代码,而不是作为一个单独的工具。到目前为止,它看起来非常甜蜜。

反射器 EAP http://www.simple-talk.com/community/blogs/alex/attachment/74919.ashx

于 2009-10-22T11:27:55.860 回答
1

关于反编译 .NET 已经说得够多了。如果您决定从反向工程原生二进制文件开始,我建议使用IDA

它支持不同的操作系统、处理器架构、检测和显示标准库的使用情况(因此您可以轻松找到感兴趣的地方)、显示子程序之间的依赖关系图、显示堆栈中的过程参数等。它也可以编写脚本,并且有脚本检测 C++ 类和 try-catch 块查找 UUID 的 COM 接口名称并执行许多其他操作。这是一个很棒的工具,并且有免费版本。

于 2009-10-22T12:40:14.907 回答
1

您对反编译程序集感兴趣。那么这是反编译 .NET 程序集的开始:http: //aspnet.4guysfromrolla.com/articles/080404-1.aspx

.NET 社区中用于反编译程序集的流行工具是.NET Reflector

于 2009-10-22T11:22:16.307 回答
1

它们是不同的格式。

对于 .NET dll,您可以使用 ildasm.exe(与 .net 框架一起安装)或 .NET Reflector(下载)

于 2009-10-22T11:22:57.007 回答
1

不可能 (1) 将目标代码反编译为源代码。检查接口完全是另一回事。有一些工具存在,但我不知道任何副手。

(1) - 好吧,在某些语言和某些条件下,这是可能的,但生成的代码不会完全可读......

您将获得的唯一可读代码是汇编语言(有很多程序)。有一些语言可以反编译为原始(或接近)源代码,例如 Visual Basic 3。但是现在谁用 VB3 编写程序?没有人。至于查看 DLL 的导入/导出,您可以使用来自以下网址的 Dependency walker 程序:http: //www.dependencywalker.com/

对于某些语言,例如 Visual Basic 或 C#,如果您使用良好的反编译器并且代码没有被混淆(大多数时候不是),您可以获得可读的源代码

如果您对反编译感兴趣,请查看此站点:http: //www.program-transformation.org/Transform/DecompilationPossible

对于 .Net,.NET Reflector 是要走的路。它会将您的 dll 反编译为 C# 或 VB.NET http://www.aisto.com/roeder/dotnet/

于 2009-10-22T11:25:30.033 回答
0

无论您使用哪种 .Net 语言 - 所有内容都将编译为 MSIL(Microsoft 中间语言)。您可以使用 Ildasm 之类的工具将其转换为可读的“反汇编文本”:

http://msdn.microsoft.com/en-us/library/f7dy01k1.aspx

您也可以使用反射器: http ://www.builderau.com.au/program/asp/soa/Look-inside-NET-DLL-files-with-Reflector/0,339028371,339287377,00.htm

检查类和方法(它支持不同的 .Net 语言)

于 2009-10-22T11:28:38.107 回答
0

要反编译 .Net DLL,您可以使用.Net Reflector。它适用于以任何 .Net 语言编写的 DLL。

要反编译 Java JAR 文件,请尝试Java Decompiler

反编译本机代码 (C++) 要困难得多。

于 2009-10-22T11:25:01.173 回答
0

除非您在 .NET 领域,否则 DLL 中的内容是二进制代码。您可以在其中看到的唯一语言是汇编程序——它只是呈现机器语言的一种助记方式。

于 2009-10-22T11:26:53.523 回答
0

对于本机 DLL 的这个程序,Hex-Rays Decompiler(优秀的 IDAPro 反汇编器-调试器之上的一层)可能是你能得到的最接近的。它不会恢复原始代码,而是将反汇编转换为类似 C 的伪代码。不过它并不便宜。

于 2009-10-22T12:41:28.520 回答