如何理解班级名称添加<>符号?

时间:2013-10-27 07:26:56

标签: c# il

如何在C#中理解这段代码?

using System;
internal class <Module>
{
}

类名不能包含符号<>,但允许在代码中包含它?你会如何实现这一目标?我怎么能理解这种差异呢?

看看这段代码:

internal class <Module>{D8BAC701-C957-4CBE-8F97-37BB3A7DAFFE}
{
    static <Module>{D8BAC701-C957-4CBE-8F97-37BB3A7DAFFE}()
    {
        if (!(eqXmHMg8VVPy3nYeAo.eHiMp4DL8(Convert.ToBase64String(Type.GetTypeFromHandle(epOl6XynGueNUNwY5Y.e53w34m968awCm9P85taUZe(33554477)).Assembly.GetName().GetPublicKeyToken()), "eObc8gibn") != "34NavQ/3DsKjaKpYVSNSMjtuaXO9zUZlQl7AY+p3wrM="))
        {
            return;
        }
        while (true)
        {
            eqXmHMg8VVPy3nYeAo.ce4DmfsmSrOT856tDgfrkMb();
        }
    }
}

这个类甚至没有命名空间。

我用ILSpy反编译了这个DLL。但是,我如何使用此代码并对其进行去混淆呢?

1 个答案:

答案 0 :(得分:3)

看起来它可能是obfuscated代码。这段代码以一种仍然有效的方式编译到IL中,但人类无法轻易理解。

这是有效的,因为有效标识符的规则在C#和IL中是不同的。因此,当您尝试反编译代码时,您将获得无效的C#,但IL本身是有效的。

此外,即使在C#中,类也不必位于名称空间中。