如何打开.dll文件以查看其中写了什么?

问题描述 投票:78回答:7

我丢失了类库的解决方案,可以打开由.dll创建的class-library文件。

c# .net class-library
7个回答
98
投票

您最好使用像redgates .net反射器或jetbrains resharper反编译器之类的反编译器。也有开源的,例如

http://www.jetbrains.com/decompiler/

http://ilspy.net/


22
投票

请按照以下步骤操作。

  1. 转到开始菜单。
  2. 键入Visual Studio工具。
  3. 转到上面的文件夹。
  4. [如果是VS 2013,请单击“ VS 2013开发人员命令提示符”在VS 2010中为“ Visual Studio命令提示符”。
  5. 在命令提示符加载到屏幕类型ILDASM.EXE后,按ENTER。
  6. ILDASM窗口将打开。将.dll文件从文件夹中拖动到窗口。或单击File->New。然后添加所需的.dll文件。
  7. 经过上述步骤后,将出现Mainfest和.dll文件。双击这些文件以查看其中包含的内容。

6
投票

我认为您已经下载了.NET Reflector和此FileGenerator插件http://filegenreflector.codeplex.com/,如果您这样做,

  1. 打开Reflector.exe,

  2. 查看并单击加载项,

  3. 在“加载项”窗口中,单击“添加...,

  4. 然后找到您已下载的dll

  5. FileGenerator.dll(巫婆来自FileGenerator插件),

  6. 然后关闭加载项窗口。

  7. 转到文件并单击打开,然后选择要反编译的dll,

  8. 打开后,它将显示在树视图中,

  9. 转到工具并单击生成文件(Crtl + Shift + G),

  10. 选择输出目录并根据需要选择适当的设置,单击生成文件。

OR

使用http://ilspy.net/


3
投票

用Visual Studio打开.dll文件。或资源编辑器。


3
投票

您无法获得确切的代码,但是可以获得其反编译的版本。

最受欢迎(也是最好的)工具是Reflector,但还有其他.Net反编译器(例如Dis#)。

您还可以使用ILDASM来反编译IL,该工具与.Net Framework SDK工具捆绑在一起。


1
投票

Telerik的Just Decompile是我用过的最好的。使用电子邮件注册后即可免费使用。

enter link description here


-9
投票

*。dll文件是使用winzip / 7zip等打开的存档文件。这并不是说所有.dll文件都是存档,您可以使用.dll扩展名保存任何内容,但是大多数Windows .dll文件都是作为此类示例的存档示例是Windows> twain_32.dll,它是一个存档文件,但是twain.dll不是,如果您查看twain.dll,您会看到MZ®作为前三个记事本字符,它表示已编译的C文件/程序或程序的一部分。而MZ似乎是一个存档。

也大多数.exe文件是压缩文件,大多数包含该文件和Windows安装程序包的图标图像等,它们还包含程序运行图像,电影等所需的所有信息,以及包含安装信息和纯文本文件的目录。

[我在这里有一个游戏game.exe,它包含java类文件,一个图像,该图像指示着指向.exe的指针以运行.bat文件。显然,您的.bat文件会从存档中运行javac调用并运行游戏,还有一些.dll存档也包含Java类文件。

[autorun]
ICON=AUTORUN\MINCRAFTLOGO.ICO

标准图标重定向在这里.ico是.exe文件中.dll文件中的图像文件。因此,在.exe文件上看到的图像是Minecraft徽标。这位于一个名为autorun.inf的文件中。第二个例子

[discstarter]
    startpage=Autostart\Disk1.html
    uselanguagestartpage=1
    windowcaption=Solid Edge
    licensee=Siemens PLM Software
    productguid=05B227DF-DB00-4934-B3C8-40B7D8FAA54A
    singleinstance=1
    hidesplashscreen=1
    noscrollbars=0
    showstatusbar=1
    splashscreentime=0
    windowwidth=750
    windowheight=775
    buttondir=Autostart
    toolbarcolor=16777215
    toolbar=goback,goforward,gohome,print,exit
    [autorun]
    open=autostart.exe
    icon=Autostart\ENGINE.ICO

这是solidedge.exe Autostart \中包含的Solid Edge autorun.inf文件,是Autostart.dll目录。 open = autostart.exe指定要在原始solidedge.exe归档文件内运行的autostart.exe文件。这是使用.dll(动态链接库)文件http://www.flipcode.com/archives/Creating_And_Using_DLLs.shtml的示例程序。

它还显示了它们是如何创建的。如您所见,dll文件的内容由exe文件调用,正如我之前解释的那样,这里也有一个教程http://msdn.microsoft.com/en-us/library/ms235636.aspx,正如我之前所说,7zip或winzip将打开动态链接库作为存档,只要您有.dll文件。如果动态链接库的内容显然已经编译,则需要一个可以读取文件的程序。

然而,由于.dll文件仅是档案库文件,因此dll本身应该可读,而不是编译后的C,C#文件等。基本上,.dll文件是档案库,应该是在Visual Studio中创建.dll文件时,将创建dll,并且将加密您存储在dll文件中的所有信息。通常,这种加密是由Visual Studio本身处理的,并且通常不手工编辑。当您将.dll文件内容读取为.exe时,内容将自动解密。现在,当我们谈论编译程序时,我们正在将内容更改为机器易于解释的字节码。

此文件大小将小于相同内容的原始文件。但是,文件大小较大,表明该文件实际上已被加密。可能阻止人们阅读其代码。结果,读取.dll内容称为解密而不是反编译。反编译会将已编译的txt文件转换为不可读的字节码。根据定义,标准.dll文件的使用不是开源的,因为它涉及对字节码的故意混淆。

© www.soinside.com 2019 - 2024. All rights reserved.