Антиотладка Vmprotect

instw0

Новичок
Сообщения
29
Реакции
1
Всем привет! Попробовал потрассировать последний vmprotect в x64dbg с модулем TitanHide... Отладчик уходит в какой то бесконечный цикл, есть какие то технологии или инструменты этот победить?

Антиотладка Vmprotect - Оффтоп
 

Jaa

Мудрец
Сообщения
99
Реакции
276
Есть Target, с разрабами которой многолетняя взаимная "любовь" типа кто - кого. До последнего времени они использовали VMProt 3.0 - 3.5 (именно так определяли РЕ сканеры). А вот с последними версиями они запулили мяч в мою сторону: или сменили версию VMProt'a, или изменили (добавили) какие-то его опции. Теперь DiE v.303 определяет как VMProtect (1.x), а Exeinfo PE v.0.0.6.6 поступает честнее: Unknown EXE [CRC Set]. Ещё в карте памяти вместо обычных двух появились три секции: .vmp0, vmp1 и vmp2. Но самое паскудное то, что Olly со стронгом или x64dbg с ScyllaHide теперь палятся! Пробовал пошевелить галочки - безрезультатно.
Может кто встречался с такой байдой? Куда копать?
Попробуйте SharpOD со стронгом, должно скрывать.
 
  • Понравилось
Реакции: ChVL

ClockMan

Мудрец
Сообщения
19
Реакции
491
Есть Target, с разрабами которой многолетняя взаимная "любовь" типа кто - кого. До последнего времени они использовали VMProt 3.0 - 3.5 (именно так определяли РЕ сканеры). А вот с последними версиями они запулили мяч в мою сторону: или сменили версию VMProt'a, или изменили (добавили) какие-то его опции. Теперь DiE v.303 определяет как VMProtect (1.x), а Exeinfo PE v.0.0.6.6 поступает честнее: Unknown EXE [CRC Set]. Ещё в карте памяти вместо обычных двух появились три секции: .vmp0, vmp1 и vmp2. Но самое паскудное то, что Olly со стронгом или x64dbg с ScyllaHide теперь палятся! Пробовал пошевелить галочки - безрезультатно.
Может кто встречался с такой байдой? Куда копать?
Старо как мир, сиськи в нутри протектора)))
 

DX0

Новичок
Сообщения
173
Реакции
77
Если говорить про цикл при этом нигде нет бряков на инструкция, то скорее всего у тебя
Всем привет! Попробовал потрассировать последний vmprotect в x64dbg с модулем TitanHide... Отладчик уходит в какой то бесконечный цикл, есть какие то технологии или инструменты этот победить?
Скачай и установи лучше плагин ScyllaHide там входит все, и TitanHide, и не только. Это самый лучший плагин на мой взгляд для отладчика x64dbg.

Бывает такая ситуация, когда выставляешь все опции по скрытию отладчика от VMProtect, то он все равно видит отладчик.
 
Последнее редактирование:

not_srd17

Новичок
Сообщения
24
Реакции
12
Бывает такая ситуация, когда выставляешь все опции по скрытию отладчика от VMProtect, то он все равно видит отладчик. Я как раз щас ищу эту защиту в протекторе, мне даже интересно стало че эта за алгоритм скрытия такой.
ScyllaHide легко обходится, достаточно лишь сделать сисколл (В случае x32 - Heaven's gate) в NtQueryInformationProcess с параметром DebugPort.

Чтобы обойти TitanHide/SuperHide достаточно посмотреть в TEB дебаггера.
 

DX0

Новичок
Сообщения
173
Реакции
77
Знаете какой плагин скорее всего напишу "Хук на последовательность вызовов функции WinAPI в программе защищенным протектором", и показывать в логе для информативности.
 

_MBK_

Новичок
Сообщения
264
Реакции
65
DX0 вы б вместо того, чтобы с Инди сраться, внимательно почитали, что он пишет. В вмпроте не все так просто как вам кажется, на мой взгляд, вам просто не самые сложные сэмплы попадались.
 

DX0

Новичок
Сообщения
173
Реакции
77
DX0 вы б вместо того, чтобы с Инди сраться, внимательно почитали, что он пишет. В вмпроте не все так просто как вам кажется, на мой взгляд, вам просто не самые сложные сэмплы попадались.
Начну с того, что с Indy я не срался, он сам начал первый оскорблять, ну я в ответ. Да, и еще. Я в протекторах не новичок, а мастер своего дела! Ну это так, без понтов!
 
Последнее редактирование:

not_srd17

Новичок
Сообщения
24
Реакции
12
Начну с того, что с Indy я не срался, он сам начал первый оскорблять, ну я в ответ. Да, и еще. Я в протекторах не новичок, а мастер своего дела!
ScyllaHide мануалмаппится и привязывается к Wow64 в TEB'e, в чём проблема проверять пренадлежит ли адрес указанный как Wow64Transition к wow64cpu/ntdll?
 

DX0

Новичок
Сообщения
173
Реакции
77
установил плагин ScyllaHide, загрузил vmprotect - приложение, установил профиль Vmprotect и.. все равно видит дебаггер ((( .
Дело в том, что ты столкнулся с проверкой целостности кода на брейкпоинтах. Если ты уберешь все брейкпоинты, то есть сделаешь их не активными, то программа загрузится прямо в отладчике. Дело в том, что когда ставишь брейкпоинт на инструкции, отладчик внедряет int3(0xCC) в память, тем самым, когда CRC-калькулятор начинает читать инструкции на месте где стоят брейкпоинты, он натыкается на int3(0xCC) и Hash-сумма становится неправильной, вот почему собственно и обнаруживается отладчик. Самое что интересное, что отладчик не показывает int3(0xCC) в коде, а показывает инструкции как будто они без int3(0xCC). Если говорить прямо, тебе нужно патчить CRC-калькулятор и то место где ты собираешься ставить бряки подменять Hash-сумму на оригинальную Hash-сумму, в этом как раз токи и сложность взлома программ и протекторов.
 
Последнее редактирование:

DX0

Новичок
Сообщения
173
Реакции
77
Чтоб Вы понимали, главное оружие любого протектора, в том числе VMProtect - это проверка целостности кода, то есть CRC-калькулятор. Это самый хитрый способ, я даже сказал бы, сложная техника защиты кода от отладки и патча. Обойти защиту от отладки, я имею в виду WinAPI функции и PEB заголовок - это все пустяки. Главное - это CRC-калькулятор. Обещать не буду, потому как сразу критика повалится, может запишу видео и покажу вам, может статейку создам на эту тематику.

Вот вам пример:
E9 78563412 | jmp 0x12345678 - без брейкпоинта
СС 78563412 | jmp 0x12345678 - с брейкпоинтом

Аппаратные точки останова не обнаруживаются по тому CRC-калькулятором, потому-что аппаратные брейкпоинты используют отладочные регистры, то есть не int3(0xCC) в памяти использует, а регистры.

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

Gideon Vi

Мудрец
Сообщения
163
Реакции
566
Самое что интересное, что отладчик не показывает int3(0xCC) в коде, а показывает инструкции как будто они без int3(0xCC)
обалдеть, правда? ) есть еще хардбряки
проверка целостности кода, то есть CRC-калькулятор. Это самый хитрый способ, я даже сказал бы, сложная техника защиты кода от отладки и патча
ой вей
 
  • Понравилось
Реакции: mak

Gideon Vi

Мудрец
Сообщения
163
Реакции
566
чувак, не останавливайся, пеши ещё. Я просто душой отдыхаю
 

DX0

Новичок
Сообщения
173
Реакции
77
Я одно время сайту https://rsload.net предоставлял свои таблетки, причем защищенные VMProtect-тами, без лоадеров. Да я и щас помогаю по маленьку.
 

ChVL

Новичок
Сообщения
17
Реакции
12
Попробуйте SharpOD со стронгом, должно скрывать.
Не получилось, к сожалению. А ведь поднебесники такой мануал сочинили, что страшно становится - ну, прям, их Sharp один всё сделает, и отладчика не надо.
главное оружие любого протектора, в том числе VMProtect - это проверка целостности кода. Это самый хитрый способ <...>. Главное - это CRC-калькулятор.
На всякую хитрую *опу найдётся прибор с винтом ©. Из личного опыта. Получалось сотворить патч проверки CRC VMProtect'a 3.0 только в ОДНОМ месте кода (раз уж тут дело до понтов дошло). На всё-про-всё расходного материала 17 байт с учётом jmp на свободное место для вставки. Однако Дерматолог не дремлет. Поживём - увидим...
 

_MBK_

Новичок
Сообщения
264
Реакции
65
Получалось сотворить патч проверки CRC VMProtect'a 3.0 только в ОДНОМ месте кода (раз уж тут дело до понтов дошло).
Если по фаллометрии, то у меня как то получался инлайн патч вообще без лоадера и нарушения девственности кода, но это, конечно, тоже простейший случай ;)
 

ChVL

Новичок
Сообщения
17
Реакции
12
@_MBK_,
Да не вопрос. Нормальный инлайн патч в принципе не нарушает девственности кода, а вместо лоадера - dll-ка
 

Bronco

Мудрец
Сообщения
76
Реакции
338
Самый сложный алгоритм обхода CRC-калькулятора
Хз...что на свежих гавнопротах, года три не ковырял, но..на 3.2 проблем с контрольной суммой небыло. патчишь где надо, ловишь функу црц на чтение участка кода, трассируешь, функа посчитает новую црц, скампарит с прежней, найдёшь старую црц в данных гавнопрота, заменишь на новую, и голова не болит. что сейчас?Да, и црц = dword.
 

DX0

Новичок
Сообщения
173
Реакции
77
Некоторые скажут, что "А, CRC-калькулятор херня!". На самом деле, когда я ломал одну программу, там было 5 - CRC-калькуляторов и нужно было к каждому внедрится, плюс каждому CRC-калькулятору сделать Hash-ы. Самое печальное это то, что когда нажимаешь какие-нибудь кнопки в программе, то он каждый раз рандомно вызывает CRC-калькулятор из 5, то есть, даже если написать лоадер к программе, то все равно лоадер программу не пропатчит и будет ошибка о том, что программа под влиянием загрузчика. Тут как не крути, все 5 CRC-калькуляторов надо патчить. В принципе, обойти это легко, просто геморойно в плане того, что он рандомно вызывает CRC-калькуляторы, а тебе надо все их найти, в этом как раз и сложность патча. Опять же, главное оружие любого протектора от лоадеров - это CRC-калькулятор.

Я это к чему все говорю, что главную роль тут играет еще и рандом в плане вызовов CRC-калькуляторов, а тебе надо их все найти, вот в чем сложность. Кто не разу с этм не сталкивался, тому я не позавидую, серьезна. Чтобы найти все CRC-калькуляторы, надо 200 раз перезапускать программу, чтобы наткнутся на все CRC-калькуляторы, или же искать по похожем инструкциям CRC-калькулятора.


Когда я что-то ломаю, то ломаю под эту песню: Terror - Hard Lessons
Всем рекомендую послушать эту песню, реальный бодряк!
 
Последнее редактирование:

DX0

Новичок
Сообщения
173
Реакции
77
Теперь я Вам покажу причину, по которой восстановить таблицу импорта не представляется возможным в VMProtect с большей вероятностью. Нет, ну если вы хотите пропатчить всю программу где вызываются WinAPI функции, то к старости Вы закончите, я Вас уверяю. Если попробовать написать плагин, который сделает это все автоматически, то с большей вероятностью он не справится, потому как это нужно перепатчить весь файл программы без ошибок и создавать новую секцию с таблицей импорта в программе, то есть фиксануть.
 

Прикрепленные файлы:

Последнее редактирование:
Верх Низ