-9

我有一个 windows exe 程序,我知道它是用 C# 编写的,当我使用 ILSpy 7.6 解密 dll(exe) 时,类代码如下所示:

namespace eGTt4d2HADJI3qZvyr
{

 internal class epOl6XynGueNUNwY5Y
  {
    internal static ModuleHandle e1gr6SXh7;
    internal static RuntimeTypeHandle e53w34m968awCm9P85taUZe(int token)
    {
        return epOl6XynGueNUNwY5Y.e1gr6SXh7.GetRuntimeTypeHandleFromMetadataToken(token);
    }
    internal static RuntimeFieldHandle q3oMVe54wE47w4v68C7s2I(int token)
    {
        return epOl6XynGueNUNwY5Y.e1gr6SXh7.GetRuntimeFieldHandleFromMetadataToken(token);
    }
    public epOl6XynGueNUNwY5Y()
    {
        <PrivateImplementationDetails>{75896B12-4F98-4FD3-B464-42D866146FAE}.SLV0fFIsptsZtjvFft17();
        base..ctor();
    }
    static epOl6XynGueNUNwY5Y()
    {
        // Note: this type is marked as 'beforefieldinit'.
        <PrivateImplementationDetails>{75896B12-4F98-4FD3-B464-42D866146FAE}.SLV0fFIsptsZtjvFft17();
        epOl6XynGueNUNwY5Y.e1gr6SXh7 = typeof(epOl6XynGueNUNwY5Y).Assembly.GetModules()[0].ModuleHandle;
    }
}

}

我想知道是否可以像这样重构代码的真实名称。因为代码的名称几乎看不懂,没有人能从无意义的代码名称中理解其含义。如何才能获得真实名称,例如“epOl6XynGueNUNwY5Y”?是否可以获取真实姓名或提高代码的可读性?

4

2 回答 2

6

您很可能已经反编译了一个混淆的exe。混淆的主要原因是为了保护代码。因此,除非您知道代码是如何被混淆的(模式/算法)等,否则您将无法获得原始类名。您可以在此处阅读更多相关信息。

于 2013-08-02T15:38:01.947 回答
6

这是混淆代码。获得原始类名的唯一方法是在混淆之前拥有代码。除非代码的编写者在其中留下一些漏洞,否则唯一的选择是通读代码并花费大量时间重构代码以摆脱晦涩难懂并尝试从中理解,但它可能会更快地编写自己的应用程序来做同样的事情。

作为附加说明,由于代码被混淆,代码具有真实的类名。即使您要调用返回类名的方法,这也正是您应该期望得到的。

于 2013-08-02T15:43:39.790 回答