eXeL@B —› Вопросы новичков —› детект отладчика dotNet |
Посл.ответ | Сообщение |
|
Создано: 19 февраля 2017 01:43 · Поправил: zds · Личное сообщение · #1 смотрю две программы dotNet одного производителя с одинаковой защитой в обоих программах при загрузке некоторых dll в них проверяется наличие отладчика Code:
что интересно, в первой программе этот код не палил отладчик и я спокойно мог отлаживать. Сейчас приступил ко второй и этот же самый код, на той же самой системе палит отладчик на второй проверке - IsDebuggerPresent. всю голову сломал почему так. пробовал и IlSpector и dnSpy и Dile. единственное отличие это первая прога на FrameWork 3.5, вторая на 4. как то можно это обойти? патч пока не вариант, т.к. он потянет за собой патчи большого колличества проверок на хэши файлов, строгие имена, подписи сборок и т.д. в во многих файлах. |
|
Создано: 19 февраля 2017 01:58 · Личное сообщение · #2 |
|
Создано: 19 февраля 2017 02:10 · Личное сообщение · #3 |
|
Создано: 19 февраля 2017 02:11 · Личное сообщение · #4 |
|
Создано: 19 февраля 2017 02:30 · Личное сообщение · #5 difexacaw блин видимо поздно и я туплю, но я все равно не понимаю если бы это была Olly, то да, я захожу в модуль kernel32, нахожу функцию isdebuggerpresnt либо меняю в памяти код чтобы всегда возвращался 0 либо ставлю бряк в конце функции и руками меняю значение регистра но как это все сделать в отладчике Net не представляю. они же не работаю с нативным кодом |
|
Создано: 19 февраля 2017 02:36 · Личное сообщение · #6 |
|
Создано: 19 февраля 2017 02:53 · Личное сообщение · #7 zds пишет: руками меняю значение регистра значение регистра возвращается и проверяется на procAddress_() != 0 представь что это test eax, eax вообще, в чём проблема запатчить bool result = true; на false? | Сообщение посчитали полезным: Jaa |
|
Создано: 19 февраля 2017 11:13 · Личное сообщение · #8 |
|
Создано: 20 февраля 2017 10:28 · Личное сообщение · #9 |
|
Создано: 20 февраля 2017 10:48 · Личное сообщение · #10 |
|
Создано: 20 февраля 2017 19:32 · Личное сообщение · #11 difexacaw пишет: Залейтесь в процесс и делайте что угодно. Или залейтесь в этот ваш отладчик net". пробовал - не получается. если загрузить прогу в IlSpector или dnSpy, то Olly уже не цепляется. если загрузить в Olly IlSpector или dnSpy, а в них уже прогу - то Olly все равно ее не видит. -=AkaBOSS=- пишет: вообще, в чём проблема запатчить bool result = true; на false? я писал в самом начале, что патч не вариант - он сразу потянет за собой необходимость патчить еще десяток dll и еще десяток мест в каждой из них в которых проверяются хэши файлов, цифровые подписи и тд. Medsft пишет: Делай раз))) 1. Пишешь на NET свой лоадер в котором патчишь kernel32.dll функцию "IsDebuggerPresent" а затем просто им же подгружаешь свой проект в тот же домен. И все))) тоже думал об этом, но все же нашел более простой для себя способ - нашел все проверки на деббагер до нужного мне места, поставил в dnSpy бряк на Code:
и менял в вручную переменную result, благо dnSpy это позволяет сделать. Единственный минус каждый раз при запуске нужно было 7 раз менять значение. Но хорошо что потребовалось не так много запусков чтобы найти все что нужно |
|
Создано: 20 февраля 2017 20:04 · Поправил: difexacaw · Личное сообщение · #12 zds > если загрузить прогу в IlSpector или dnSpy, то Olly уже не цепляется. Потому что они тот же отладочный механизм используют, а отладчик один только у процесса может быть. > если загрузить в Olly IlSpector или dnSpy, а в них уже прогу - то Olly все равно ее не видит. Конечно, потому что под отладку берётся отладчик, а не его приложение. Я имел ввиду подгрузиться в ваше приложение и там произвести нужные манипуляции. К примеру залиться как длл. Или можно это сделать в сам ваш отладчик и при взятии приложения им под отладку обнулять нужное поле в отлаживаемом приложении. Лучше конечно первый вариант. Могу пильнуть нужный для этих целей модуль, но только x32. ----- vx |
|
Создано: 20 февраля 2017 20:44 · Личное сообщение · #13 |
|
Создано: 21 февраля 2017 04:07 · Личное сообщение · #14 zds Вот запилил вам дллку(x32) Её нужно в процесс подгрузить - в импорт добавить или залить через инжект. ----- vx | Сообщение посчитали полезным: Hugo Chaves, zds |
|
Создано: 21 февраля 2017 13:31 · Поправил: Medsft · Личное сообщение · #15 |
|
Создано: 21 февраля 2017 23:57 · Личное сообщение · #16 difexacaw спасибо. на следующей версии жертвы обязательно попробую, чтобы не править кучу переменных руками каждый раз. а с этой версией я уже все решил. мне еще конечно очень был интересен вопрос: почему один и тот же код, в одно и тоже время, на одной и той же системе и с одними и теми же инструментами на одной проге детектит деббагер, а на другой нет. |
|
Создано: 22 февраля 2017 00:07 · Личное сообщение · #17 zds В том модуле ошибка(не сохраняется один регистр, из за этого механизм отключается), позже выложу с фиксом. > на одной проге детектит деббагер, а на другой нет. Для этого нужно знать как он это делает. Может механизм детекта анстаб или приложение на этот механизм воздействует. Добавлено спустя 3 часа 6 минут Вот что получилось Добавлено спустя 3 часа 14 минут Я разделил исходную либу на две части. Что бы можно было по быстрому допилить фильтр другим компилем, дельфёй например. ----- vx | Сообщение посчитали полезным: zds, Orlyonok |
|
Создано: 22 февраля 2017 15:09 · Поправил: Medsft · Личное сообщение · #18 |
|
Создано: 22 февраля 2017 15:11 · Личное сообщение · #19 Medsft Там проверка на флажёк в PEB. Если сброшен, то скипается. Так как тогда полагаем что отладчик не запущен. Хотя плаги или сам отладчик может это поле обнулять. Добавлено спустя -46 минут Вот простейший пример. Проверил на XP, 7, 8. 624f_22.02.2017_EXELAB.rU.tgz - Ij.rar ----- vx |
|
Создано: 27 февраля 2017 12:13 · Поправил: Medsft · Личное сообщение · #20 difexacaw пишет:... ты manadged с unmandged особо не сравнивай вот тест кривоватый но на основе конфузера сработанный Как: Запускаем под отладчиком, жмем start protection если не упала радуемся на 50% затем вбиваем любые цифирки в окошечки и жмем посчитать (простое суммирование) если не упала радуемся на 100% в папках релиз и дебаг есть скомпилированные exe 47c9_27.02.2017_EXELAB.rU.tgz - TestApp.zip |
|
Создано: 27 февраля 2017 12:27 · Поправил: difexacaw · Личное сообщение · #21 Medsft Посмотрите лог при старте. Может это фишка отладчика, что обнуляет флаг.. Можно вообще данную проверку убрать. Проверил ваш семпл. Так как это com-app, то инжект нужно немного пофиксить - заменить rEax на rEip(который в #19). На 7-ке под отладчиком без плагинов работает, не вылетает и вычисляет норм апликуха. На 7-ке у меня не робит софт для записи видео. Поэтому пофиксил в пе хидере версию системы, но в отличие от 7-ки на XP не запускается отладчик при int3 в нэйтиве, поэтому я туда вписал jmp $ ----- vx |
eXeL@B —› Вопросы новичков —› детект отладчика dotNet |