2010-01-30 249 views

回答

104

您可以汉堡包用牛,但你不能让牛汉堡包。

+24

+1这是一个反汇编请求的热闹报价:) – 2010-01-30 18:02:11

+31

可能很有趣,但不是很有用。 – DMKing 2010-02-01 16:31:19

+1

@DMKing - FWIW问题在发布时未被标记为C#,并且我在下一个答案的评论中向S.Mehdi发送了链接到.NET Reflector的链接。 – 2010-02-02 19:50:39

32

从dll到源代码的过程称为反编译。它是源语言特有的技术。你能否给我们提供更多关于源语言的信息,以便我们可以向你指出一种给定的技术?

编辑更新

如果C#是所选择的语言即可看到源使用Reflector.exe的最佳途径。请注意,这不会让您回到100%原始来源。它是对原始来源的估计。在某些情况下它会产生准确的输出。

+0

我在VS2008中使用c#dll – 2010-01-30 17:57:52

+0

@ S.Mehdi,更新我的回答 – JaredPar 2010-01-30 18:02:09

+0

谢谢,我给你投票。 – 2010-01-30 18:11:50

-1

与任何其他编译的二进制文件相同的方式。

您既可以查看原始来源,也可以使用反编译器。

2

也许使用.NET反射器或内部检查,但作为@JaredPar说要看什么技术

4

既然你说过你在使用C#.Net,那么你可以使用.NET Reflector来反编译DLL,例如C#代码。正如其他人所说,你会得到原始代码的公平表示,但可能不是确切的原始C#代码。

有一个例外 - 有些公司在装运它们之前在其组件上应用了一个像Salamander .NET Obfuscator这样的混淆器。这个过程的结果是反编译代码难以理解,如果混淆器没有被使用。有些公司甚至会对组件进行加密。混淆和加密保护知识产权免受偶然攻击,但无法防止重大的,精心设计的逆向工程工作。鉴于这一现实,并非所有公司都会采用混淆的方式,而不是加密。

你不会说dll来自哪里,但是如果你购买了它们,如果供应商不希望你在里面寻找,反射器不会帮你太多。最后,请记住,如果您购买了软件,反编译(不论​​dll是否被模糊处理)可能违反了软件许可协议

1

我知道答案太迟,但可能会在未来帮助某人。
要查看DLL的代码,请使用Red-gates的.NET Reflector 7.6工具。

2

考虑到我有同样的问题,所以其他人也会这样的事实,只有更新我发现的内容才有意义。所以......

我发现2个用于此目的的免费工具:

  1. dotpeek由JetBrains公司,ReSharper的的制造商 - 漂亮的用户界面,但我认为它给的代码是不是真的读这么好。 http://www.jetbrains.com/decompiler/
  2. ILSpy是开源的 - 不是很漂亮,但做得非常好。 http://www.ilspy.net/
0

如果您只是想知道dll程序集中的几个基本内容,例如类,方法等,

我会建议IL反汇编程序工具由微软提供。

一般位于: “C:\ Program Files文件(x86)的\微软的SDK \的Windows \ v7.0A \ BIN

观看的帮助手册。你会得到一些基本的想法。

注意:我没有在IL Disassember中测试过exe程序集。

7

我能够从.dll文件

提取代码

我用http://ilspy.net/

这截屏是一个核心库实现的(我认为)

enter image description here

0

最流行的(也是最好的)工具是Reflector,但也有其他.Net反编译器(如Dis#)。您还可以使用ILDASM反编译IL,它与.Net Framework SDK工具捆绑在一起。