Способы запутать исходный код c # / silverlight - PullRequest
5 голосов
/ 13 июля 2010

Я ищу способы запутать следующий исходный код c # / silverlight:

    if (searchBox.Text.Equals("string literal")){
        MessageBox.Show("another string literal");
    }

Пока все, что я могу придумать, чтобы скрыть это, - это кодирование строк как массивов ascii ...

Все, что я хочу, это чтобы исходный код не читался, это для пасхального яйца.Безопасность не является для меня приоритетом.

Я не хочу, чтобы было известно о наличии пасхального яйца.Я пытаюсь запутать поток программы, чтобы она не выглядела так, как будто есть строка кода, подобная

if (specialcase)
    doEasterEgg();

Я видел такие вещи, как состязание с запутанным c, где привет мир превращается в мрачный обман,Что-нибудь похожее, что люди знают о с #?

Ответы [ 2 ]

4 голосов
/ 13 июля 2010

От чего именно вы хотите защитить?

  • Передача текстового значения элемента управления на ваш сервер?В этом случае мотивированный злоумышленник легко преодолеет любое «запутывание» любым способом без шифрования.Вы должны изучить шифрование ваших строк , а не запутывать их.

  • Если вы хотите запутать сам исходный код, вам действительно следует разрешить сторонний инструмент справится с этим .Все, что вы можете изобрести самостоятельно, скорее всего, будет легко реверсировано.

  • РЕДАКТИРОВАТЬ : Если вы просто хотите спрятать пасхальное яйцо, как насчет использования ROT13 ?

  • EDIT 2 : как насчет того, чтобы назначить им вводящие в заблуждение константы и сослаться на них в другом статическом классе с неверным именем?

.

// in other source file ValidateInput.cs
public const VALID_STRING = "secret";

public class ValidateInput {
    public static bool Validate(string srcText)
    {
         return srcText == VALID_STRING;
    }
    public static void LogicValidSearch()
    {
         return;
    } 
}

//In your main application
if (ValidateInput.Validate(searchBox.Text)) {
    ValidateInput.LogValidSearch();
}
1 голос
/ 13 июля 2010

Здесь недостаточно кода, чтобы эффективно запутывать. Единственным вариантом является хеширование значения «строковый литерал» и шифрование значения «еще один строковый литерал». Этот метод также небезопасен, потому что вам придется раскрыть свой метод шифрования.

...