# REVERSE-1 Оценка: 10 ## Описание В данном задании необходимо выполнить обратную разработку и получить секретную строку. [Файл №1](https://github.com/dered-cybersecurity/nto_2023/blob/main/1-offensive/REVERSE-1/387ef6a4-9511-4826-a75b-39826591a010_hello_ZmDKPvB.exe) ## Решение Участнику предоставляется .exe файл под win64. Если бинарный файл открыть в IDA, как исполняемый файл для Windows, и декомпилировать функцию main то видно, что мы ничего не обнаружим (рис. 1). ![](https://i.imgur.com/ZRns9Gr.jpg) Рис. 1 Тогда единственное предположение, где может находиться флаг, это в dos-stub, поэтому нам необходимо открыть бинарный файл, как исполняемый, под dos (рис. 2). ![](https://i.imgur.com/2Ew8gSW.jpg) Рис. 2 И запустить его под отладкой с помощью [плагина](https://www.old-games.ru/forum/threads/revers-v-dosbox-s-pomoschju-ida.57039/) для IDA (рис. 3). ![](https://i.imgur.com/ZTI39Ud.jpg) Рис. 3 Таким образом мы увидим, что флаг печатается на экран, а каждый следующий символ флага появляется с бОльшей задержкой, чем предыдущий. Нам необходимо открыть дизассемблированный код dos stub и найти прерывание, где происходит вывод символа на экран (рис. 4). ![](https://i.imgur.com/gSyJsH2.jpg) Рис. 4 Далее мы замечаем, что перед выводом символа в консоль происходит ксор двух байтов, которые берутся по адресам, которые лежат в регистре [si], и [si + 0x27]. Также видим, что в si кладётся 0xD, здесь нужно не забыть про адрес загрузки исполняемого файла. В регистре cx лежит длина флага. Затем ксорим две последовательности байтов и получаем флаг (рис. 5). ![](https://i.imgur.com/5CCORGR.jpg) Рис. 5