如何提取类? dll 文件中的源代码?

发布于 2024-10-12 21:02:53 字数 45 浏览 7 评论 0原文

有没有软件可以做到这一点?我在网上没有找到任何有用的信息,所以我在这里询问。

Is there any software to do this? I didn't find any useful information on the internet so I am asking here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

ㄟ。诗瑗 2024-10-19 21:02:53

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

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

You cannot get the exact code, but you can get a decompiled version of it.

The most popular (and best) tool is Reflector, but there are also other .Net decompilers (such as Dis#). You can also decompile the IL using ILDASM, which comes bundled with the .Net Framework SDK Tools.

请别遗忘我 2024-10-19 21:02:53

只有像C#Java这样的托管语言才能被完全反编译。您可以查看完整的源代码。对于Win32 DLL,您无法获取源代码。

对于 C# DLL, 使用 JetBrains dotPeek - 免费且与付费类似Redgate .Net Reflector

玩得开心。

Only managed languages like C# and Java can be decompiled completely. You can view the complete source code. For Win32 DLLs, you cannot get the source code.

For C# DLLs, use JetBrains dotPeek - free and similar to the paid Redgate .Net Reflector.

Have fun.

夏有森光若流苏 2024-10-19 21:02:53

使用 dotPeek

在此处输入图像描述

选择要反编译的.dll

输入图像描述在这里

就是这样

Use dotPeek

enter image description here

Select the .dll to decompile

enter image description here

That's it

在巴黎塔顶看东京樱花 2024-10-19 21:02:53

使用折射镜。
此处下载。

  1. 安装后打开软件。
  2. 按 Ctrl + O 并选择您的 DLL 文件。
  3. Dll 将显示在左窗格中。
  4. 右键单击 Dll 并选择导出源代码。
  5. 选择要导出文件的文件夹
  6. 稍等片刻,可能需要 2-3 分钟

在此处输入图像描述

Use Refractor.
Download from here.

  1. Open the software after installing.
  2. Press Ctrl + O and select your DLL File.
  3. Dll will be shown in left pane.
  4. Right click on Dll and select Export Source Code.
  5. Select the folder in which you want to export your files
  6. Wait for a while it may take 2-3 minutes

enter image description here

浅笑依然 2024-10-19 21:02:53

您可以使用 Reflector 并使用 插件 FileGenerator 将源代码提取到项目中。

You can use Reflector and also use Add-In FileGenerator to extract source code into a project.

傲性难收 2024-10-19 21:02:53

您可以使用 dotPeek
唯一要说的是,使用时,在类上右键选择Decompiled Source,而不是双击,否则dotpeek只会显示本地cs文件的内容,而不显示反编译的内容。

选项实例

You can use dotPeek
The only thing I have to say is that when using it, right-click on the class to select Decompiled Source instead of double-clicking, otherwise dotpeek will only display the contents of the local cs file, not the decompiled content.

Option instance

半葬歌 2024-10-19 21:02:53

如果您只想了解 dll 程序集中的一些基础知识,例如类、方法等,要动态加载它们,

您可以使用 Microsoft 提供的 IL 反汇编工具。

一般位于:“C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin”

If you want to know only some basics inside the dll assembly e.g. Classes, method etc.,to load them dyanamically

you can make use of IL Disassembler tool provided by Microsoft.

Generally located at: "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin"

只怪假的太真实 2024-10-19 21:02:53

我使用 Refractor 从 dll 文件恢复我的脚本/代码。

I used Refractor to recover my script/code from dll file.

ぺ禁宫浮华殁 2024-10-19 21:02:53

使用 ILSpy - 它是开源且免费的!

Use ILSpy - it is open source and free of charge!!!

捎一片雪花 2024-10-19 21:02:53
 public async void Decompile(string DllName)
 {
     string destinationfilename = "";

     if (System.IO.File.Exists(DllName))
     {
         destinationfilename = (@helperRoot + System.IO.Path.GetFileName(medRuleBook.Schemapath)).ToLower();
         if (System.IO.File.Exists(destinationfilename))
         { 
             System.IO.File.Delete(destinationfilename);
         }

         System.IO.File.Copy(DllName, @destinationfilename);
     }
        // use dll-> XSD
     var returnVal = await DoProcess(
            @helperRoot + "xsd.exe", "\"" + @destinationfilename + "\"");

     destinationfilename = destinationfilename.Replace(".dll", ".xsd");

     if (System.IO.File.Exists(@destinationfilename))
     {
          // now use XSD
          returnVal =
            await DoProcess(
              @helperRoot + "xsd.exe", "/c /namespace:RuleBook /language:CS " + "\"" + @destinationfilename + "\"");

            if (System.IO.File.Exists(@destinationfilename.Replace(".xsd", ".cs")))
            {
                string getXSD = System.IO.File.ReadAllText(@destinationfilename.Replace(".xsd", ".cs"));
           
            }
        }
}
 public async void Decompile(string DllName)
 {
     string destinationfilename = "";

     if (System.IO.File.Exists(DllName))
     {
         destinationfilename = (@helperRoot + System.IO.Path.GetFileName(medRuleBook.Schemapath)).ToLower();
         if (System.IO.File.Exists(destinationfilename))
         { 
             System.IO.File.Delete(destinationfilename);
         }

         System.IO.File.Copy(DllName, @destinationfilename);
     }
        // use dll-> XSD
     var returnVal = await DoProcess(
            @helperRoot + "xsd.exe", "\"" + @destinationfilename + "\"");

     destinationfilename = destinationfilename.Replace(".dll", ".xsd");

     if (System.IO.File.Exists(@destinationfilename))
     {
          // now use XSD
          returnVal =
            await DoProcess(
              @helperRoot + "xsd.exe", "/c /namespace:RuleBook /language:CS " + "\"" + @destinationfilename + "\"");

            if (System.IO.File.Exists(@destinationfilename.Replace(".xsd", ".cs")))
            {
                string getXSD = System.IO.File.ReadAllText(@destinationfilename.Replace(".xsd", ".cs"));
           
            }
        }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文