Я ищу способы запутать следующий c#/silverlight исходный код:
if (searchBox.Text.Equals("string literal")){
MessageBox.Show("another string literal");
}
До сих пор все, что я могу придумать для сокрытия его, кодирует строки массивами ASCII...
Все, что я хочу, - чтобы исходный код был нечитабелен, это для пасхального яйца. Безопасность не является приоритетом для меня.
Я не хочу, чтобы присутствие пасхального яйца было известно. Я пытаюсь запутать процесс выполнения программы, таким образом, это не появляется как существует строка кода как
if (specialcase)
doEasterEgg();
Я видел материал на подобном запутываемый конкурс c, где привет мир превращается в globbidy липкую грязь. Что-либо подобное, о котором знают люди для c#?
От чего именно вы хотите защитить?
Передача текстового значения элемента управления на ваш сервер? В этом случае любое «запутывание» любыми методами, не связанными с шифрованием, легко преодолеет мотивированный злоумышленник. Вам следует изучить шифрование ваших строк , а не их запутывание.
Если вы хотите запутать сам исходный код, вы действительно должны позволить стороннему инструменту обработать это . Все, что вы могли бы изобрести самостоятельно, скорее всего, будет легко изобрести в обратном порядке.
РЕДАКТИРОВАТЬ : если вы просто хотите скрыть пасхальное яйцо, как насчет использования ROT13 ?
РЕДАКТИРОВАТЬ 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();
}
Здесь недостаточно кода для эффективного обфускации. Ваш единственный вариант - это хеширование значения «строкового литерала» и шифрование значения «другого строкового литерала». Этот метод также небезопасен, потому что вам придется раскрыть свой метод шифрования.