无论源代码使用何种编程语言,都可以使用什么软件查看 .dll 文件中的源代码?
10 回答
对于 .NET,Reflector会这样做;“ Pro”版本(现在是预览版)有一个 Visual Studio 插件,可以让您在 VS IDE 本身中调试大多数托管代码,而不是作为一个单独的工具。到目前为止,它看起来非常甜蜜。
反射器 EAP http://www.simple-talk.com/community/blogs/alex/attachment/74919.ashx
关于反编译 .NET 已经说得够多了。如果您决定从反向工程原生二进制文件开始,我建议使用IDA。
它支持不同的操作系统、处理器架构、检测和显示标准库的使用情况(因此您可以轻松找到感兴趣的地方)、显示子程序之间的依赖关系图、显示堆栈中的过程参数等。它也可以编写脚本,并且有脚本检测 C++ 类和 try-catch 块,查找 UUID 的 COM 接口名称并执行许多其他操作。这是一个很棒的工具,并且有免费版本。
您对反编译程序集感兴趣。那么这是反编译 .NET 程序集的开始:http: //aspnet.4guysfromrolla.com/articles/080404-1.aspx
.NET 社区中用于反编译程序集的流行工具是.NET Reflector
它们是不同的格式。
对于 .NET dll,您可以使用 ildasm.exe(与 .net 框架一起安装)或 .NET Reflector(下载)
不可能 (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/
无论您使用哪种 .Net 语言 - 所有内容都将编译为 MSIL(Microsoft 中间语言)。您可以使用 Ildasm 之类的工具将其转换为可读的“反汇编文本”:
http://msdn.microsoft.com/en-us/library/f7dy01k1.aspx
检查类和方法(它支持不同的 .Net 语言)
要反编译 .Net DLL,您可以使用.Net Reflector。它适用于以任何 .Net 语言编写的 DLL。
要反编译 Java JAR 文件,请尝试Java Decompiler。
反编译本机代码 (C++) 要困难得多。
除非您在 .NET 领域,否则 DLL 中的内容是二进制代码。您可以在其中看到的唯一语言是汇编程序——它只是呈现机器语言的一种助记方式。
对于本机 DLL 的这个程序,Hex-Rays Decompiler(优秀的 IDAPro 反汇编器-调试器之上的一层)可能是你能得到的最接近的。它不会恢复原始代码,而是将反汇编转换为类似 C 的伪代码。不过它并不便宜。