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


Answers:



30

请按照以下步骤操作。

  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将出现文件。双击这些文件以查看其包含的内容。

我遵循了您使用VS 2012和2015 / Windows 7 Pro的明确指示。然而,ILDASM发表了如下消息.dll文件我试图探究:has no valid CLR header and cannot be disassembled
CODE READ

2
此过程用于反汇编CLR生成的中间语言。
mmushtaq '16

7

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

  1. 打开Reflector.exe,

  2. 转到查看,然后单击加载宏,

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

  4. 然后找到您下载的dll

  5. FileGenerator.dll(文件生成器插件附带的巫婆),

  6. 然后关闭外接程序窗口。

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

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

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

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

要么

使用http://ilspy.net/


您具体建议哪一个?ILspy还是Reflector?利与弊
T.Todua

3

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

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

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


1

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


2
当我尝试使用Visual Studio Express 2013 / Windows 7 Pro打开.dll文件时,它发出以下消息:There is no editor available for (file I tried to open). Make sure the application for the file type (.dll) is installed.
CODE-REaD



-11

*。 > twain_32.dll是一个存档文件,但是如果您查看twain.dll,则不是twain.dll,您会看到MZ®作为前三个记事本字符,表示已编译的C文件/程序或程序的一部分。而MZ似乎是一个存档。

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

我在这里有一个游戏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中包含的Solid Edge autorun.inf文件。Autostart \是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/zh-cn/library/ms235636.aspx,正如我之前所说只要您具有.dll文件,7zip或winzip就会打开一个动态链接库作为存档。如果动态链接库的内容显然已经编译,则需要一个可以读取文件的程序。

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

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


8
我不确定这在计算界是否会被视为叛教或异端。如何改善?如果是在纸上,我可以用火柴把它从痛苦中解脱出来。
brewmanz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.