Post

RU | 'PE DotNet - Basic Anti-Debug' from root-me.org

First

Сегодня автор одного из заданий предлагает нам решить задачку двумя способами - статическим и динамическим. Разберем очень простой пример анти-отладки, и такой же простой её обход. Приложение у нас DotNet, поэтому задача становится ещё легче.
Скачиваем, открываем: Second

Переходим в dnSpy, загружаем наш файл и сразу переходим к исходному коду. У нас есть 2 варианта анализа - динамический и статический. Лично я выберу первый вариант, ибо навык обхода различных техник анти-отладки - это очень полезно.
И так, находим функцию в которой реализована анти-отладка и смотрим что она из себя представляет: Third

Программа просто проверяет все процессы и ищет по имени “ILSpy” или “dnSpy”. Если процесс с таким именем есть, то программа просто выдает предупреждение и вызывает функцию base.Close(), которая закрывает программу.
Перед нами снова развилка, в первом случае мы можем просто изменить название dnSpy на что угодно, во втором случае - пропатчить функцию в анализируемой программе. Если первый вариант не нуждается в объяснении, то опишу второй.

Выделяем функцию -> ПКМ -> Edit Method (C#).. / Ctrl + Shift + E
Стираем функции base.Close(), и метод теперь выглядит так: Four

Жмём Compile и далее:
File -> Save All.. / Ctrl + Shift + S -> Соглашаемся со всем по умолчанию и жмём OK.
Теперь если мы откроем exe’шник, достаточно просто закрыть сообщение об отладчике и программа будет работать должным образом.
Теперь просто находим блок кода с проверкой пароля и ставим точку остановки:

ПКМ по строчке кода -> Add Breakpoint / F9
(Левее от номера строчки должен появиться красный кружочек) Five

Далее,
Открываем ch39.exe -> в dnSpy жмем Attach To Process / Ctrl + Alt + P -> выбираем наш процесс.
Теперь в программе нужно ввести любой пароль, нажать Check! и сразу перейти в отладчик. Смотрим что наш пароль сохраняется в переменной text, смотрим на значения всех локальных переменных в момент отладки и находим то что нам нужно: Six

Конграчулэйшонс гайс

This post is licensed under CC BY 4.0 by the author.