首页 > 解决方案 > 反编译源码中的\uE0001.\uE000是什么意思?

问题描述

我正在使用此感应卡扫描仪软件读取我的卡以进行测试。他们提供了一个 SDK,但它涵盖了除桌面扫描仪之外的所有内容,即使他们的软件能够很好地读取它。我注意到他们的软件是用 .NET 编码的,我可以使用 JetBrains dotPeek 对其进行反编译。我非常接近我需要的东西。除了这 3 行之外,我能够修复反编译的代码。我不熟悉如何处理编码:

string[] array = ((IEnumerable<string>) ConfigurationManager.AppSettings.AllKeys).Where<string>((Func<string, bool>) (stg => stg.StartsWith(\uE0001.\uE000(27359)))).ToArray<string>();

string str = ((IEnumerable<string>) ConfigurationManager.AppSettings.AllKeys).Any<string>((Func<string, bool>) (stg => stg == \uE0001.\uE000(28615))) ? ConfigurationManager.AppSettings[\uE0001.\uE000(28615)] : directoryName;

assyTypeKey = index2.Replace(\uE0001.\uE000(28428), \uE0001.\uE000(28439));

我知道它们是 Unicode 字符,但它旁边的括号中的声明对我来说看起来很陌生。我不知道如何处理这个。

这是功能之一。我知道它很丑,但它被反编译了:

    public static void LoadSubServices()
    {
      //SubServicesManager._logger.Info((object) \uE0001.\uE000(28243));
      string[] array = ((IEnumerable<string>) ConfigurationManager.AppSettings.AllKeys).Where<string>((Func<string, bool>) (stg => stg.StartsWith(\uE0001.\uE000(27359)))).ToArray<string>();
label_2:
      int num1 = 1;
      while (true)
      {
        switch (num1)
        {
          case 0:
            //SubServicesManager._logger.Error((object) \uE0001.\uE000(28270));
            num1 = 2;
            continue;
          case 1:
            if (array.Length == 0)
            {
              num1 = 0;
              continue;
            }
            goto label_7;
          case 2:
            goto label_31;
          default:
            goto label_2;
        }
      }
label_7:
      string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName);
      //SubServicesManager._logger.InfoFormat(\uE0001.\uE000(28582), (object) directoryName);
      string str = ((IEnumerable<string>) ConfigurationManager.AppSettings.AllKeys).Any<string>((Func<string, bool>) (stg => stg == \uE0001.\uE000(28615))) ? ConfigurationManager.AppSettings[\uE0001.\uE000(28615)] : directoryName;
label_9:
      int num2 = 1;
      while (true)
      {
        switch (num2)
        {
          case 0:
            //SubServicesManager._logger.ErrorFormat(\uE0001.\uE000(28621), (object) str);
            num2 = 2;
            continue;
          case 1:
            if (!Directory.Exists(str))
            {
              num2 = 0;
              continue;
            }
            goto label_14;
          case 2:
            goto label_6;
          default:
            goto label_9;
        }
      }
label_6:
      return;
label_14:
label_33:
      for (int index1 = 0; index1 < array.Length; ++index1)
      {
label_17:
        int num3 = 2;
        string appSetting1 = null;
        string appSetting2 = null;
        ILoadableServer loadableServer = null;
        string index2 = null;
        string assyTypeKey = null;
        while (true)
        {
          switch (num3)
          {
            case 0:
              //SubServicesManager._logger.InfoFormat(\uE0001.\uE000(28419), (object) appSetting1);
              num3 = 1;
              continue;
            case 1:
              loadableServer = SubServicesManager.LoadSubServiceAssembly(appSetting1, str, appSetting2);
              num3 = 5;
              continue;
            case 2:
              index2 = array[index1];
              num3 = 3;
              continue;
            case 3:
              assyTypeKey = index2.Replace(\uE0001.\uE000(28428), \uE0001.\uE000(28439));
              num3 = 6;
              continue;
            case 4:
              //SubServicesManager._logger.ErrorFormat(\uE0001.\uE000(28442), (object) appSetting1);
              num3 = 9;
              continue;
            case 5:
              if (loadableServer == null)
              {
                num3 = 4;
                continue;
              }
              goto label_29;
            case 6:
              appSetting2 = ConfigurationManager.AppSettings[index2];
              num3 = 7;
              continue;
            case 7:
              if (((IEnumerable<string>) ConfigurationManager.AppSettings.AllKeys).Any<string>((Func<string, bool>) (stg => stg == assyTypeKey)))
              {
                num3 = 8;
                continue;
              }
              goto label_30;
            case 8:
              appSetting1 = ConfigurationManager.AppSettings[assyTypeKey];
              num3 = 0;
              continue;
            case 9:
              goto label_33;
            default:
              goto label_17;
          }
        }
label_29:
        SubServicesManager._loadableServices.Add(loadableServer);
        //SubServicesManager._logger.InfoFormat(\uE0001.\uE000(28496));
        continue;
label_30:
return;
//SubServicesManager._logger.WarnFormat(\uE0001.\uE000(28525), (object) index2, (object) appSetting2);
      }
      return;
label_31:;
    }

标签: c#

解决方案


推荐阅读