Отражатель: комментарий в этом коде означают, что все это запутывается?

Таким образом в коде ниже Вы заметите комментарий "//, Этот объект запутывается и не может быть переведен".

То, что я задаюсь вопросом, это означает, что комментарий там вместо некоторого запутываемого кода и что следует, на самом деле не запутывается, или это означает, что "следующий код запутывается"?

Из того, что я могу найти в сети, она походит на первого, но я не уверен. Код ясно выглядит запутываемым, но это весьма переводимо, просто весело.

public static NameValueCollection ParseStringIntoNameValueCollection(string responseString, bool undoCallbackEscapes)
{
    // This item is obfuscated and can not be translated.
    NameValueCollection values;
    string[] strArray;
    int num;
    string str2;
    string str3;
    int num3;
    goto Label_0027;
Label_0002:
switch (num3)
{
    case 0:
        if (!undoCallbackEscapes)
        {
            goto Label_0057;
        }
        num3 = 4;
        goto Label_0002;

    case 1:
        goto Label_00E5;

    case 2:
        if (num < strArray.Length)
        {
            string str = strArray[num];
            int index = str.IndexOf('=');
            str2 = str.Substring(0, index);
            str3 = str.Substring(index + 1);
            num3 = 0;
        }
        else
        {
            num3 = 6;
        }
        goto Label_0002;

    case 3:
        if (7 < (7 - 5))
        {
            goto Label_0071;
        }
        goto Label_00E5;

    case 4:
        str2 = unEscapeCallbacks(str2);
        str3 = unEscapeCallbacks(str3);
        num3 = 5;
        goto Label_0002;

    case 5:
        goto Label_0057;

    case 6:
        return values;
}
Label_0027:
    values = new NameValueCollection();
    strArray = responseString.Split(new char[] { '&' }, StringSplitOptions.RemoveEmptyEntries);
    num = 0;
    num3 = 1;
    goto Label_0002;
Label_0057:
    values.Add(str2, str3);
    num++;
    num3 = 3;
    goto Label_0002;
Label_00E5:
    num3 = 2;
    goto Label_0002;
}

Обновление: Я действительно находил это... "Иногда, не слишком часто, когда Отражатель демонтирует исходный код для Вас, он покажет, что "Этот объект запутывается и не может быть переведен" вместо кода".

Чтобы мне подразумевает, что это покрывает запутываемый код с комментарием. Кто-либо может проверить это? Я действительно смотрел на IL, и кажется, что это показывает все настолько, возможно, что оператор не точен.

Мне этот код похож на него, запутывался 5-летним со знанием ОСНОВНЫХ в противоположность некоторому программному обеспечению путаницы.

5
задан Carter 27 February 2010 в 00:08
поделиться

2 ответа

Независимо от того, насколько он запутан, вы всегда должны иметь возможность декомпилировать в IL, чтобы вы могли посмотреть на это и увидеть, действительно ли рефлектор показывает вам все .

2
ответ дан 14 December 2019 в 19:11
поделиться

Кажется, это выглядит запутанным в том смысле, что это строковая функция, которая разбивает строку на основе амперсанда и проходит через переключатель / case , чтобы определить, как с ним обращаться. Использование goto чисто (судя по всему) запутывает читателей кода в несколько плохом смысле ...

Конечно, вы можете загрузить любую .NET EXE / DLL с помощью рефлектора Redgate (ранее Rutz Loeder's Reflector) для анализа и сброса кода, поэтому, каким бы «запутанным» он ни был, обфускация на самом деле не служит цели, поскольку код может быть довольно легко декомпилирован.

Нет реального способа защитить .NET EXE / DLL, если она не зашифрована и не использует неуправляемый код C / C ++ для загрузки среды выполнения .NET, расшифровки .NET EXE и загрузки ее в новый домен приложения. .

Надеюсь, это поможет, С уважением, Том.

3
ответ дан 14 December 2019 в 19:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: