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();
        }
    }
}

このクラスには名前空間さえありません。

この DLL をILSpyで逆コンパイルしました。しかし、このコードを使用して難読化を解除するにはどうすればよいでしょうか?

4

1 に答える 1

3

これは難読化されたコードのようです。これは、有効な方法で IL にコンパイルされたコードですが、人間には簡単には理解できません。

これが機能するのは、有効な識別子のルールが C# と IL で異なるためです。したがって、コードを逆コンパイルしようとすると、無効な C# が得られますが、IL 自体は有効です。

また、C# であっても、クラスは名前空間にある必要はありません。

于 2013-10-27T10:25:51.567 に答える