tima-s@ya.ru

Самое необычное тестовое задание

Life is life

Created with Sketch.

Самое необычное тестовое задание

Сегодня я делал самое необычное тестовое задание в своей жизни. Приходит некоторая фирма, приносит бинарь на 1,5 кб. Говорит, где-то внутри есть вызов MessageBox, но он заблокирован, исполнение до него не доходит. Нужно ответить что написано в сообщении MessageBox.

Это задание настолько необычно для меня!!! Я привык писать код, а не реверс-инжинирить его.
В общем, сначала я просто открыл бинарь в дизассемлере, думал щас увижу текст сообщения, зашитый в бинарь. Гляжу и понимаю, что идет XOR расшифровка. Нда.. здорово, сообщение зашифровано.

Можно было конечно, так побайтово и расшифровать вслед за ассемблерным кодом. Но это долго. И я оставил этот способ про запас, если не найду ничего лучше.
Стал искать дальше и нашел short jump прямо перед открытием MessageBox. Этот короткий переход перепрыгивал через функцию.

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

С замиранием сердца я запускаю новый патченный бинарь на исполнение. Страшно!!! И…
Вуаля. Я добрался до искомого MessageBox!
Я впервые в жизни занимаюсь таким! Настолько крутое тестовое задание выпало! Жуть!!! Но было очень интересно!!!

Там еще было дальше задание со звездочкой, написать код на Си, который бы патчил этот бинарь автоматически. Но зная адреса команд, смещение в файле, это уже больше рутина, чем задание со звездочкой.

Фух!! Мне никогда так здорово не было!! И страшно! И интересно! И кайф от того, что попробовал нечто новое для себя.

Tags:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *