使用asp.net反编译Reflector的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用asp.net反编译Reflector的问题相关的知识,希望对你有一定的参考价值。

// Assembly bohairencai

Location: C:\Documents and Settings\Administrator\桌面\bohai\bin\zhabggi.dll' Name: bohairencai, Module 'C:\Documents and Settings\Administrator\桌面\bohai\bin\zhabggi.dll' contains zero or multiple module definitions.

首先得确认这个dll是用.NET开发出来的,如果是C++或者VB 6.0生成的dll,Reflector无法反编译追问

不是C++,是C#

追答

对方是否用过了混淆器?

参考技术A 首先得确认这个dll是用.NET开发出来的,如果是C++或者VB 6.0生成的dll,Reflector无法反编译追问

选择DLL了,还是不行

参考技术B 试着把你的系统时间往前改个两年试试。追问

系统时间往前改个两年之后还是不行

在 Rider 中反编译 ASP.NET Core 3.x 源

【中文标题】在 Rider 中反编译 ASP.NET Core 3.x 源【英文标题】:Decompile ASP.NET Core 3.x sources in Rider 【发布时间】:2020-01-05 06:15:31 【问题描述】:

我在 Ubuntu 18.10 上使用 Rider 2019.2.3,并安装了版本 3.1.100 的 .NET SDK。

当我尝试导航到反编译的源时,有时我只会看到方法的声明而没有它们的实现,例如:

public static class IdentityServiceCollectionExtensions

    public static IdentityBuilder AddIdentity<TUser, TRole>(
      this IServiceCollection services)
      where TUser : class
      where TRole : class;
    ...

Rider 从程序集 /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/3.1.0/ref/netcoreapp3.1/Microsoft.AspNetCore.Identity.dll 获取此源。我检查了它的 IL 代码,看起来这个程序集只包含方法的存根,而没有它们的实现。

所以我有几个问题:

    ASP.NET Core 库的实际程序集在我的计算机上的位置是什么? 如何强制 Rider 反编译实际程序集?

我的.csproj 指定了Microsoft.NET.Sdk.Web SDK,所以我想也许我应该安装一些特殊的SDK 用于Web 开发,但我找不到任何相关信息。

【问题讨论】:

实际来源....github.com/aspnet/AspNetCore/blob/master/src/Identity/… @KeithNicholas,是的,我知道在哪里可以远程找到它,但我想知道,在计算机上哪里可以找到实际的程序集。 您可能想澄清第 1 点。然后 【参考方案1】:

在 JetBrains Rider 2019.3 中修复的 .NET Core 3.0 中的反编译方法主体的导航。请将您的版本更新到最新的可用版本。

【讨论】:

【参考方案2】:

实现程序集的基本路径是:

C:\Program Files\dotnet\shared\

我创建了一个简单的 ASP.NET Core 应用程序并添加了您的 IdentityBuilder AddIdentity&lt;TUser, TRole&gt; 函数。反编译时也无法自动解析。

您的案例的实际组装路径是:

C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.0\Microsoft.AspNetCore.Identity.dll

在 Ubuntu 上应该是:

/usr/share/dotnet/shared/Microsoft.AspNetCore.App/3.1.0/Microsoft.AspNetCore.Identity.dll

一旦我手动将此文件添加到反编译器中,我就可以逐步查看源代码

如果该路径不存在,您可能必须安装适用于 Ubuntu 的 AspNetCore SDK。

【讨论】:

是的,我还发现了程序集的路径。实际上,这个库是 ASP.NET Core 运行时的一部分,所以我们可以在 dotnet --info 命令的帮助下检查带有实际程序集的目录。 @charles,您能否澄清一下,您是如何将程序集显式添加到反编译器的?我使用 Rider,当我尝试添加显式引用 &lt;Reference Include="Microsoft.AspNetCore.Identity" /&gt; 时,我收到来自 MSBuild 的警告,提示无法解析该引用。 我刚刚安装了 Rider 和源步进,包括对 .NET Core 项目的反编译,并且您的示例函数在我没有配置任何内容的情况下工作。恕我直言,它只是自动从微软服务器下载符号文件。默认设置为:Tools-&gt;External symbolsUse sourcesAllow downloadingDecompile methods 已选中。

以上是关于使用asp.net反编译Reflector的问题的主要内容,如果未能解决你的问题,请参考以下文章

VSVisual Studio 就可以反编译查看源码了,再见了 Reflector

asp.net mvc 之旅—— 第四站 学会用Reflector调试我们的MVC框架代码

.NET Reflector反编译的方法

.Net Reflector反编译工具如何将注释显示出来?

转载文章----IL反编译利器——Ildasm.exe和Reflector.exe:

有位好心人那里有VS.net的反编译工具