Rating: 3.0
# Angry Guessing Game - 200 points
Angry Guessing Game
This game is currently in a trial mode. It asks for a license key to continue. Can you find this key?
guessing_game
Hints:
* Binary file was updated. Please reload the file
### Solution
Пробуем запустить нашу программу в linux, мы пытаемся угадать число загаданное в коде с помощью подсказок больше или меньше.
На третьем уровне программа требует от нас лицензионный ключ для того что-бы играть дальше.
Окей.
Открываем наш файл в дизассемблере IDA Pro.
Первым делом сразу открываем поиск всех строк которые вводит программа или были в коде:
Находим нужную нам строчку, будем отталкиваться от неё:
Нажимаем на клавиатуре "x", что бы посмотреть где использовалась фраза о правильном ключе:
Или с помощью контекстного меню Jump => Jump to xref to operand...
Повторяем наши действия:
Теперь когда мы пришли к месту где вызывается этот текст, нажимаем "f5" или как на скриншоте через контекстное меню, смотрим псевдокод на C++ для удобства читаемсти кода:
Здесь мы видим что присутствуют выводы сообщений как и о правильном ключе, так и о неверном.
Нажимаем пробел, что бы посмотреть граф этой функции:
Видим функцию "sub_6660" котрая сверяет ключ и в итоге отправляет нужный ответ нам:
Открываем эту функцию и смотрим её псевдокод. Смотрим что возвращает функция, и видим что переменная "v4" берётся из функции "sub_67D0".
Смотрим что в ней:
Видим значения очень похожие на ASCII значения английского алфавита. Переводим их в символы нажатием на клавиатуре "r":