如何在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。但是,我如何使用此代码并对其进行去混淆呢?
答案 0 :(得分:3)
看起来它可能是obfuscated代码。这段代码以一种仍然有效的方式编译到IL中,但人类无法轻易理解。
这是有效的,因为有效标识符的规则在C#和IL中是不同的。因此,当您尝试反编译代码时,您将获得无效的C#,但IL本身是有效的。
此外,即使在C#中,类也不必位于名称空间中。