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