【问题标题】:How can I decompile a batch of .NET DLLs into a Visual Studio project [closed]如何将一批 .NET DLL 反编译为 Visual Studio 项目 [关闭]
【发布时间】:2012-04-20 08:58:06
【问题描述】:

我只需要在我的 C# 代码中搜索一些文本。

我已经有了 .NET Reflector 和 File Disassembler Add-In,但这些似乎只是反编译了一个 DLL。

【问题讨论】:

    标签: c# .net visual-studio decompiling decompiler


    【解决方案1】:

    实际上,这些答案都不对。

    是的,所有工具都可以将*.dll文件反编译成*.csproj文件,但它们都不支持CLI或批处理。您可以节省安装时间。

    目前最好的解决方案是使用dotPeek,将所有*.dll 文件放入一个文件夹并使用探索文件夹选项。

    dotPeek 将分析给定文件夹并显示位于文件夹内的DLLs 树。您可以为每个加载的dll 手动生成csproj


    如果您遇到这篇文章是因为您正在寻找答案如何在您的或第 3 方dlls 中找到特定指令,特别是使用反射,您可以使用此 PowerShell 脚本将dlls 反编译为 IL 并查看用于指令(System.Reflection.Assembly::Load(string) 用于反射)。

    注意

    它使用 .NET Framework SDK 工具包中的中间语言 DisASseMbler (ILDASM)。根据您的 SDK 版本调整路径。

    function Get-LibDump
    {
        Param(
    # Specifies a path to one or more locations. Wildcards are permitted.
        [Parameter(Mandatory=$true,
                Position=0,
                ParameterSetName="Basic",
                ValueFromPipeline=$true,
                ValueFromPipelineByPropertyName=$true,
                HelpMessage="Path to one or more locations.")]
        [ValidateNotNullOrEmpty()]
        [SupportsWildcards()]
        [ValidateScript({$_ | Test-Path})]
        [System.IO.FileInfo]
        $Path
        )
        process
        {
            $dumpFileFilePath = $Path.BaseName + '.il'
            $outFile = "C:\LibDump\$dumpFileFilePath"
            Start-Process -FilePath 'c:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools\ildasm.exe' -ArgumentList "/UNICODE /OUT=`"$outFile`" `"$($Path.FullName)`"" -Wait
            "Dump from:`n$(Resolve-Path -Path $Path.FullName -Relative)" | Out-File -FilePath $outFile -Encoding:unicode -Append
        }
    }
    
    # Use
    Get-ChildItem -Path $PathToLibFolder -Filter '*.dll' -File -Recurse | Get-LibDump
    

    【讨论】:

    • “实际上,这些答案都不是正确的” - 承认,您在细节上扩展了很多,但 2012 年的原始答案之一确实提到了 dotPeek。无论如何,如今这类问题通常被认为是题外话,因为任何要求使用最佳工具的事情都必然会得到人们个人意见的回答。
    • 我认为“基于意见”的问题被积极地从 SO 中挤出,这是 SO 最大的失败之一。随着在 IT 领域工作的时间越来越长,我认为有更多经验的人的意见是最好的资源之一。是的,那里有很多巨魔,但也有善良和聪明的人。 ??‍♀️
    • ILSpy 现在支持使用其独立 GUI 将多 DLL 反编译为 C# 代码。它甚至会创建一个 sln 文件。 github.com/icsharpcode/ILSpy
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    相关资源
    最近更新 更多