Обход антиотладки VMProtect и прочих протекторов

Разработчик
Разработчик
Статус
Оффлайн
Регистрация
23 Авг 2017
Сообщения
171
Реакции
474
Ахтунг!

Сегодня речь пойдёт об антиотладке VMProtect, которая сильно импрувнулась начиная с версии 3.1, в итоге её не берут никакие плагины по типу ScyllaHide. Связано это с тем что разрабы перестали вызывать функции из системных длл, они начали это делать шеллкодом в выделенной памяти через syscall/sysenter (более подробно эту систему я описал в своей прошлой статье с анализом защиты забугорного чита во главе "Защита вызовов системных функций": https://yougame.biz/threads/52330/)

Возможно мало кто знает, но существует драйвер под названием TitanHide, который ебёт антиотладку практически всех протекторов (пока не встречал продукта с которым он не справился). Однако на 10-ке не советую его использовать, ставьте для этой задачи Windows 7. Всё что требуется сделать это загрузить драйвер в систему и подключить к отладчику плагин.

В общем, вот пошаговая инструкция:
  1. Скачиваем сорс драйвера TitanHide -
    Пожалуйста, авторизуйтесь для просмотра ссылки.
    (здесь так же есть доп. информация по драйверу, рекомендую ознакомиться)
  2. Компилируем сборку "TitanHide" в зависимости от того, на какой ОС будет происходит загрузка (Для семёрки выбираем "Win7 Release", для остальных ОС - "Release").
  3. С помощью тестмода/руткитов подгружаем драйвер в систему.
  4. Компилируем сборку плагина для вашего отладчика:
    otEgDr0.png
  5. Пихаем плагин в отладчик.
  6. Запускаем отладчик и загружаем в него ваш таргет. Если вы используете x64dbg, то в логе должны появиться новые записи по типу: "[TitanHide] Hiding PID 1337", "[TitanHide] Process hidden!".
  7. Стартуем софт и прыгаем от радости что нас не послали с открытым отладчиком (при условии что вы всё сделали правильно).
Иногда бывают случаи, что после рестарта программы в отладчике плагин не передаёт новый PID драйверу, в этом случае вам нужно просто перезапустить отладчик (ну либо можете пофиксить сие проблему в сорсе драйвера, мне как то влом в этом копаться ¯\_(ツ)_/¯).

Всем удачи!

P.S. Пишите какой контент по реверсингу вас больше всего интересует, возможно мне есть чем поделиться.
 
Последнее редактирование:
Ты же просто показал людям TitanHide :DDD Нормальный такой гайд.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как вариант можно детектить в приложении драйвер по сигнатурам если найдена то приложение крашит ну ещё что то вроде такого (вариант анти анти отладки)
 
Ты же просто показал людям TitanHide :DDD Нормальный такой гайд.
А ты думал все статьи от меня будут похожи на самую первую? :roflanEbalo:
 
как вариант можно детектить в приложении драйвер по сигнатурам если найдена то приложение крашит ну ещё что то вроде такого (вариант анти анти отладки)
Драйвер по сигнатурам?... Ну только разве что проверять загружен ли драйвер через тот же CreateFile, но это фиксится простым переименованием.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А ты думал все статьи от меня будут похожи на самую первую? :roflanEbalo:
 

Драйвер по сигнатурам?... Ну только разве что проверять загружен ли драйвер через тот же CreateFile, но это фиксится простым переименованием.
ну или детектить его по каким то признакам примеру в black bone создается в аппдате файл с инфой о дллки мб и тут признаки найдутся погруженного драйвера
 
ну или детектить его по каким то признакам примеру в black bone создается в аппдате файл с инфой о дллки мб и тут признаки найдутся погруженного драйвера
Спасибо за интересное предложение, думаю авторы протекторов неприменимо им воспользуются!
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Спасибо за интересное предложение, думаю авторы протекторов неприменимо им воспользуются!
да нет почему не возьмутся (че я предлагал) ибо это опять изи фикс но думаю если посидеть и подумать то можно найти как детектить драйвер
 
да нет почему не возьмутся (че я предлагал) ибо это опять изи фикс но думаю если посидеть и подумать то можно найти как детектить драйвер
Ты для начала хоть немного изучи кернел мод и хотя бы для приличия код самого драйвера. БЕЗ собственного драйвера протекторы не смогут узнать что в системе SSDT хуки стоят к примеру.
 
Не уверен на все 100% про vmp 3.1, но мне помогал данный плагин для x64dbg: Тред на
Пожалуйста, авторизуйтесь для просмотра ссылки.

p.s Жалко релизы на гите titanhide старые.:forsenGun::FeelsBadMan:
 
Последнее редактирование:
как детектить драйвер
способов на самом деле достаточно много. От контрольных сумм и имен до полноценного мониторинга Dio(кстати у Mrac уже есть зачатки на это, точнее есть пока еще кривая попытка реализовать подобное)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
способов на самом деле достаточно много. От контрольных сумм и имен до полноценного мониторинга Dio(кстати у Mrac уже есть зачатки на это, точнее есть пока еще кривая попытка реализовать подобное)
pssetImageloadnotifyroutine тоже подходит для детекта
 
1) Вырезаешь из драйвера символьную ссылку и device_name
2) Ммапишь с помощью BB свой драйвер в ядро системы
И удачи вам его задетектить
 
1) Вырезаешь из драйвера символьную ссылку и device_name
2) Ммапишь с помощью BB свой драйвер в ядро системы
И удачи вам его задетектить
детектишь блекбон и мап твой до пизды, с еаком попробуй. как только ты его в систему всунешь тебе пизда. в плоть до перезагрузки ос
 
детектишь блекбон и мап твой до пизды, с еаком попробуй. как только ты его в систему всунешь тебе пизда. в плоть до перезагрузки ос
Я смотрю ты pCoder, ну а теперь давай посмотрим как это работает:
1) "детектишь блекбон" Посмотрим на первый пункт моего сообщения выше, что там написано? ах да удаление возможности детекта по хендлу и общения с драйвером, т.е. для тебя теперь это будет просто какой-то обычный драйвер
2) Открою тебе секрет.. EAC... как же он детектит блекбон? Думаешь это какой-то эвристический анализ? Ничего подобного, товарищи из еака просто листают DebugPrint драйверов, а блекбон (оригинальный) туда стучит обо ВСЕМ что делает(155 строк DebugPrint`а), например вот строчка из кода:
====================================================================================
DPRINT( "BlackBone: %s: PsLookupProcessByProcessId failed with status 0x%X\n", __FUNCTION__, status );
====================================================================================
Что в итоге, ты удаляешь эти строчки и Oy Sh1t, EAC больше не пишет "Please Close Xenos Injector"
Какай-то магия - не иначе
3) + У нас есть возможность загружать драйвер не через сервис менеджер, а напрямую через ядро системы (NtLoadDriver)
В итоге наш драйвер даже в списке загруженных драйверов не будет виден
Итог: У кого-то не хватает знаний и ЧСВ улетело куда-то далеко вверх
Ну а драйвер да, до сих пор можно задетектить - Терморектальным криптоанализом, но сделать у тебя это увы не получится.
 
Я смотрю ты pCoder, ну а теперь давай посмотрим как это работает:
1) "детектишь блекбон" Посмотрим на первый пункт моего сообщения выше, что там написано? ах да удаление возможности детекта по хендлу и общения с драйвером, т.е. для тебя теперь это будет просто какой-то обычный драйвер
и как ты собрался общатся с драйвером иначе?
2) Открою тебе секрет.. EAC... как же он детектит блекбон? Думаешь это какой-то эвристический анализ? Ничего подобного, товарищи из еака просто листают DebugPrint драйверов, а блекбон (оригинальный) туда стучит обо ВСЕМ что делает(155 строк DebugPrint`а), например вот строчка из кода:
====================================================================================
DPRINT( "BlackBone: %s: PsLookupProcessByProcessId failed with status 0x%X\n", __FUNCTION__, status );
====================================================================================
Что в итоге, ты удаляешь эти строчки и Oy Sh1t, EAC больше не пишет "Please Close Xenos Injector"
Какай-то магия - не иначе
открою тебе секрет, в системе есть открытый список всех загруженых драйверов. чтобы блекбон твой уебать, семь пядей во лбу иметь не надо.
3) + У нас есть возможность загружать драйвер не через сервис менеджер, а напрямую через ядро системы (NtLoadDriver)
В итоге наш драйвер даже в списке загруженных драйверов не будет виден
и этот самый NtLoadDriver, любой античит может ахуенно мониторить в системе, наблюдая все загружаемые драйвера после него. магия. (з.ы назови мне античит который выгружается из ядра после выхода из игры, достаточно 1 раз запустить большинство античитов и до перезагрузки винды драйвер будет в системе)
Итог: У кого-то не хватает знаний и ЧСВ улетело куда-то далеко вверх
я забыл об античитах больше чем ты когда либо знал.
Ну а драйвер да, до сих пор можно задетектить - Терморектальным криптоанализом, но сделать у тебя это увы не получится.
боюсь это недостаток фантазии. 7 лет ебу в жопу и пизду драйверные античиты и каждому кто говорил мне НЕВОЗМОЖНО на ебало ссал. 35к на банку и блекбон рип из р3.
 
и как ты собрался общатся с драйвером иначе?
на самом деле есть несколько способов))) но они из разряда: "Анальная кара"
И да, удалить просто символьную ссылку не достаточно)) это спасет от стандартных средств обнаружения))
 
и как ты собрался общатся с драйвером иначе?
Вшиваешь все функции сразу драйвер без нужды "общения", ну или при желании можно кое-что сделать
чтобы блекбон твой уебать, семь пядей во лбу иметь не надо.
Если ты не l0w c0d3r то на изи спрячешь ББ
назови мне античит который выгружается из ядра после выхода из игры
EAC
xd, ты о нем сам говорил
7 лет ебу в жопу и пизду драйверные античиты и каждому кто говорил мне НЕВОЗМОЖНО на ебало ссал. 35к на банку и блекбон рип из р3.
Мы говорим об загрузке драйвера отладчика или про обход античитов? драйверный античиты это изи, да.
 
Вшиваешь все функции сразу драйвер без нужды "общения", ну или при желании можно кое-что сделать

Если ты не l0w c0d3r то на изи спрячешь ББ

EAC
xd, ты о нем сам говорил

Мы говорим об загрузке драйвера отладчика или про обход античитов? драйверный античиты это изи, да.
драйвер отладчика можно спалить даже если его промапили в ядро. в паблике куча примеров получения доступа к озу. от ункновчитс до кучи других форумов публиковали это. как составить сигнатуры вызова функций отладки гаруна в помощь (call адресс функции), что такое FindPattern уже ни для кого не секрет. что же касается общения драйвера с приложением, чтобы ты не делал, в основе всегда будет лежать один из двух принципов:
1) общая память (файл/выделенный кусок виртуальной памяти e.c.t)
2) два буфера (прием передача если ум прийдет локальную трансляцию вроде tcp делать)
 
драйвер отладчика можно спалить даже если его промапили в ядро. в паблике куча примеров получения доступа к озу. от ункновчитс до кучи других форумов публиковали это. как составить сигнатуры вызова функций отладки гаруна в помощь (call адресс функции), что такое FindPattern уже ни для кого не секрет.
го такой анти-отладчик в длл зашьем
 
Назад
Сверху Снизу