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

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

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

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

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

Всем удачи!

P.S. Пишите какой контент по реверсингу вас больше всего интересует, возможно мне есть чем поделиться.
 
Последнее редактирование:
HVH HATER
Пользователь
Статус
Оффлайн
Регистрация
3 Авг 2016
Сообщения
302
Реакции[?]
100
Поинты[?]
0
Ты же просто показал людям TitanHide :DDD Нормальный такой гайд.
 
https://vk.com/bpcheat
Забаненный
Статус
Оффлайн
Регистрация
23 Фев 2017
Сообщения
746
Реакции[?]
171
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
как вариант можно детектить в приложении драйвер по сигнатурам если найдена то приложение крашит ну ещё что то вроде такого (вариант анти анти отладки)
 
Разработчик
Статус
Оффлайн
Регистрация
23 Авг 2017
Сообщения
171
Реакции[?]
474
Поинты[?]
1K
Ты же просто показал людям TitanHide :DDD Нормальный такой гайд.
А ты думал все статьи от меня будут похожи на самую первую? :roflanEbalo:
 
как вариант можно детектить в приложении драйвер по сигнатурам если найдена то приложение крашит ну ещё что то вроде такого (вариант анти анти отладки)
Драйвер по сигнатурам?... Ну только разве что проверять загружен ли драйвер через тот же CreateFile, но это фиксится простым переименованием.
 
https://vk.com/bpcheat
Забаненный
Статус
Оффлайн
Регистрация
23 Фев 2017
Сообщения
746
Реакции[?]
171
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А ты думал все статьи от меня будут похожи на самую первую? :roflanEbalo:
 

Драйвер по сигнатурам?... Ну только разве что проверять загружен ли драйвер через тот же CreateFile, но это фиксится простым переименованием.
ну или детектить его по каким то признакам примеру в black bone создается в аппдате файл с инфой о дллки мб и тут признаки найдутся погруженного драйвера
 
Разработчик
Статус
Оффлайн
Регистрация
23 Авг 2017
Сообщения
171
Реакции[?]
474
Поинты[?]
1K
ну или детектить его по каким то признакам примеру в black bone создается в аппдате файл с инфой о дллки мб и тут признаки найдутся погруженного драйвера
Спасибо за интересное предложение, думаю авторы протекторов неприменимо им воспользуются!
 
https://vk.com/bpcheat
Забаненный
Статус
Оффлайн
Регистрация
23 Фев 2017
Сообщения
746
Реакции[?]
171
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Спасибо за интересное предложение, думаю авторы протекторов неприменимо им воспользуются!
да нет почему не возьмутся (че я предлагал) ибо это опять изи фикс но думаю если посидеть и подумать то можно найти как детектить драйвер
 
Разработчик
Статус
Оффлайн
Регистрация
23 Авг 2017
Сообщения
171
Реакции[?]
474
Поинты[?]
1K
да нет почему не возьмутся (че я предлагал) ибо это опять изи фикс но думаю если посидеть и подумать то можно найти как детектить драйвер
Ты для начала хоть немного изучи кернел мод и хотя бы для приличия код самого драйвера. БЕЗ собственного драйвера протекторы не смогут узнать что в системе SSDT хуки стоят к примеру.
 
Псевдоадмин
Администратор
Статус
Оффлайн
Регистрация
17 Май 2018
Сообщения
183
Реакции[?]
635
Поинты[?]
78K
Не уверен на все 100% про vmp 3.1, но мне помогал данный плагин для x64dbg: Тред на
Пожалуйста, авторизуйтесь для просмотра ссылки.

p.s Жалко релизы на гите titanhide старые.:forsenGun::FeelsBadMan:
 
Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
12 Июн 2014
Сообщения
991
Реакции[?]
1,209
Поинты[?]
3K
как детектить драйвер
способов на самом деле достаточно много. От контрольных сумм и имен до полноценного мониторинга Dio(кстати у Mrac уже есть зачатки на это, точнее есть пока еще кривая попытка реализовать подобное)
 
https://vk.com/bpcheat
Забаненный
Статус
Оффлайн
Регистрация
23 Фев 2017
Сообщения
746
Реакции[?]
171
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
способов на самом деле достаточно много. От контрольных сумм и имен до полноценного мониторинга Dio(кстати у Mrac уже есть зачатки на это, точнее есть пока еще кривая попытка реализовать подобное)
pssetImageloadnotifyroutine тоже подходит для детекта
 
Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
Начинающий
Статус
Оффлайн
Регистрация
28 Июл 2018
Сообщения
9
Реакции[?]
7
Поинты[?]
0
1) Вырезаешь из драйвера символьную ссылку и device_name
2) Ммапишь с помощью BB свой драйвер в ядро системы
И удачи вам его задетектить
 
Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
1) Вырезаешь из драйвера символьную ссылку и device_name
2) Ммапишь с помощью BB свой драйвер в ядро системы
И удачи вам его задетектить
детектишь блекбон и мап твой до пизды, с еаком попробуй. как только ты его в систему всунешь тебе пизда. в плоть до перезагрузки ос
 
Начинающий
Статус
Оффлайн
Регистрация
28 Июл 2018
Сообщения
9
Реакции[?]
7
Поинты[?]
0
детектишь блекбон и мап твой до пизды, с еаком попробуй. как только ты его в систему всунешь тебе пизда. в плоть до перезагрузки ос
Я смотрю ты 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)
В итоге наш драйвер даже в списке загруженных драйверов не будет виден
Итог: У кого-то не хватает знаний и ЧСВ улетело куда-то далеко вверх
Ну а драйвер да, до сих пор можно задетектить - Терморектальным криптоанализом, но сделать у тебя это увы не получится.
 
Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
Я смотрю ты 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.
 
Эксперт
Статус
Оффлайн
Регистрация
12 Июн 2014
Сообщения
991
Реакции[?]
1,209
Поинты[?]
3K
и как ты собрался общатся с драйвером иначе?
на самом деле есть несколько способов))) но они из разряда: "Анальная кара"
И да, удалить просто символьную ссылку не достаточно)) это спасет от стандартных средств обнаружения))
 
Начинающий
Статус
Оффлайн
Регистрация
28 Июл 2018
Сообщения
9
Реакции[?]
7
Поинты[?]
0
и как ты собрался общатся с драйвером иначе?
Вшиваешь все функции сразу драйвер без нужды "общения", ну или при желании можно кое-что сделать
чтобы блекбон твой уебать, семь пядей во лбу иметь не надо.
Если ты не l0w c0d3r то на изи спрячешь ББ
назови мне античит который выгружается из ядра после выхода из игры
EAC
xd, ты о нем сам говорил
7 лет ебу в жопу и пизду драйверные античиты и каждому кто говорил мне НЕВОЗМОЖНО на ебало ссал. 35к на банку и блекбон рип из р3.
Мы говорим об загрузке драйвера отладчика или про обход античитов? драйверный античиты это изи, да.
 
Я лучше тебя
Участник
Статус
Оффлайн
Регистрация
31 Июл 2017
Сообщения
383
Реакции[?]
448
Поинты[?]
1K
Вшиваешь все функции сразу драйвер без нужды "общения", ну или при желании можно кое-что сделать

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

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

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