X-PuzzleИван Скляров (xpuzzle@real.xakep.ru, www.sklyaroff.ru) «ПРОЙДИСЬ ДЕБАГГЕРОМ ПО СВОИМ МОЗГАМ!»Не стесняйся присылать свои ответы! Даже если ты смог ответить всего на один пазл, я с интересом почитаю твои оригинальные решения. Ну а герои, которые первыми правильно ответят на все вопросы, получат призы и увидят свои имена на страницах ][. Помни: в большинстве случаев вариант ответа засчитывается как правильный, только если к нему приложено подробное и ВЕРНОЕ объяснение. ОТВЕТЫ К ПРЕДЫДУЩЕМУ ВЫПУСКУ X-PUZZLEОтвет на пазл №1 «ЛЮБОВЬ И НЕНАВИСТЬ»Исправить необходимо второй байт (или первый, если отсчет начинать с нуля) – с 2Dh на 17h. Ниже показан исходный код программы hatelove.com на ассемблере (можно также взять на диске к журналу):
Ответ на пазл №2 «ОЧЕНЬ ПРОСТОЙ ШИФР»Расшифрованная фраза: «ПОКУПАЙ ХАКЕР». В зашифрованном тексте каждый ASCII-код представляет собой порядковый номер буквы в русском алфавите. Например, ASCII-код 6h – это шестая буква в русском алфавите, то есть буква «Е». Ответ на пазл №3 «ЛОГИЧЕСКАЯ ЗВЕЗДА»Вот возможные варианты:
Ответ на пазл №4 «ЛОВЛЯ БАГОВ»
Первый участок кода. В начале функции main осуществляется проверка количества аргументов командной строки на равенство трем: if (argc != 3). Однако, далее по коду можно обнаружить, что используются аргументы argv[2] и argv[3], то есть argc должно быть, как минимум, равно 4 (от argv[0] до argv[3]). Очевидно, условие должно иметь такой вид: if (argc != 4).
Второй участок кода. Первая функция fopen, которая возвращает указатель fdout, открывает файл на чтение («rb»), но дальше в коде функцией fwrite осуществляется запись в этот файл. Вторая функция fopen, которая возвращает указатель fdin, открывает файл на запись («wb»), но затем в коде функцией fread из него осуществляется чтение. Соответственно, аргументы «rb» и «wb» в функциях fopen должны быть поменяны местами.
Третий участок кода. В стандартной Windows-функции CreateFile не хватает одного аргумента (всего их должно быть 7). ПЕРВЫЙ ПАЗЛ «ЗАБАВНОЕ КОДИРОВАНИЕ»С помощью неизвестного алгоритма фраза «Реши пазл» оказалась закодирована следующим образом:
Раскодируй такую фразу, закодированную этим же самым алгоритмом:
ВТОРОЙ ПАЗЛ «НАЙДИ ЗЛОВРЕДА»
На рисунках показаны четыре участка кода, взятые из реальных программ. Твоя задача – определить, какие из этих участков относятся к зловредам. Разумеется, необходимо обосновать, почему ты так решил. ТРЕТИЙ ПАЗЛ «ЗАКОВЫРКА»Определи правильный пароль к программе zakovirka.exe. Программу zakovirka.exe можно найти на диске к журналу или на моем сайте www.sklyaroff.ru. ЧЕТВЕРТЫЙ ПАЗЛ «ОПТИМИЗАЦИЯ ПО САМОЕ НЕ БАЛУЙСЯ»В листинге ты видишь кусок кода на языке программирования Ассемблер. Твоя задача – оптимизировать его по размеру и по скорости. При этом он не должен потерять своей функциональности.
|