RU | Reversing 'PE DotNet - 0 protection' from root-me.org
Решил взять тоже лёгкое, но более интересное задание, смысл которого разреверсить C# приложение. Приступим.
На всякий случай убедимся, что это .NET приложение, и воспользуемся утилитой file (в моем случае через mingw):
Запускаем ch22.exe и видим перед собой такую картину:
Если просто загрузить наш бинарник в Ghidra, - мы увидим просто кучку байтов из-за того, что .NET сначала компилируется в промежуточный байткод, а не в исполняемый. Ghidra не поддерживает эту архитектуру, поэтому немного погуглив, можно обнаружить кучу инструментов.
Мой выбор пал на dnSpy.(Прочитать про инструмент и его возможности вы можете как раз в описании на гитхабе или просто поискать видосики на ютубе).
Скачиваем, устанавливаем, открываем GUI версию:
Далее, Файл -> Открыть… / CTRL + O
И открываем наш exeшник.
Сейчас нас интересует столбец “Обозреватель сборок”. Бегаем глазами по всему каталогу, интуитивно отбрасываем ненужные вкладки, в итоге находим класс Form1.
Смотрим код внутри класса и понимаем, что это как раз больше всего похоже на то, что нам нужно. Пролистываем инструкции, натыкаемся на функцию Button1_Click, а внутри неё на подозрительную CompareStrings:
Смотрим на аргументы, встречаем строчку “DotNetOP” и пробуем ввести её в качестве пароля.
Получаем +10 очков и радуемся.