2

如何在 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 。但是我怎样才能使用这段代码并去混淆它呢?

4

1 回答 1

3

这看起来可能是混淆代码。那是以仍然有效但人类不容易理解的方式编译到 IL 中的代码。

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

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

于 2013-10-27T10:25:51.567 回答