[как бы этюд] Забраться в if...
От: Пельмешко Россия blog
Дата: 20.07.09 17:52
Оценка: 24 (5) :))
Здравствуйте, уважаемое rsdn community!

Недавно столкнулся с интересной (по крайней мере мне ) особенностью .NET, решил попробовать оформить в виде этюда, может кто не знает и будет интересно... Очень прошу сильно не пинать/чмырить если тупо получилось или уже обсуждалось (я не нашёл)...


Ситуация тривиальная. Волею судьбы у Вас оказался фрагмент вражеского класса:
using System.Security;

namespace Pentagon
{
    public partial class SecretDataStorage
    {
        public string GetData(SecureString password, bool goodUser)
        {
            bool goodPass = CheckPass(password);
            if (!goodPass != goodUser && goodUser)
            {
                return ResolveSecretData(); // <= попасть сюды
            }

            return null;
        }
    }
}
Пароль, естественно, неизвестен, поэтому следует считать реализацию метода CheckPass() эквивалентной следующей:
bool CheckPass(SecureString _) { return false; }


Вопрос: как, не смотря на отсутствие пароля, всё-таки спереть данные у янки каким-нибудь "грязным хаком" используя средства C#/.NET?
(то есть необходимо заставить нить исполнения зайти в ветвь if'а к вызову ResolveSecretData(), там где отмечено комментарием)


p.s. Код можно было сделать каноничным — для минимального воспроизведения поднимаемой в этом этюде проблемы, но мне захотелось попытаться хотя бы немного запутать задачу...
p.p.s. Хотелось бы чтобы гуру CLR дали время подумать неискушённым пользователям.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.