Page 1 of 1

Стелс-режим

Posted: Sun Aug 23, 2020 5:01 pm
by 00p$
Просьба реализовать возможность размещать код VMP не в отдельной секции, а внутри заранее выделенного самим программистом места (функция с мусором). Точно так же, как это умеет продукт от oreans.

Re: Стелс-режим

Posted: Mon Oct 05, 2020 4:09 pm
by Admin
Есть одна проблема, связанная с особенностями раскрутки стека при исключениях (насколько я знаю у oreans с этим вообще все плохо). Например для PE x64 (а также актуально для Mach-O и ELF) для каждой функции на уровне формата определен диапазон адресов, где она "лежит", а также есть вся информация об используемом стеке. В текущей версии VMprotect место от старых функций никак не используются и на уровне PE остается информация для раскрутки стека, которая используется при исключениях в завиртуализированных функциях (исполнитель ВМ в своем обработчике исключений "подсовывает" операционке оригинальный PC, который она в дальнейшем использует для раскрутки стека). Если на старое "место" положить код, который связан с другой функцией, то все это благополучно грохнется при первом же исключении.

Re: Стелс-режим

Posted: Wed Oct 07, 2020 11:03 pm
by 00p$
Поддержка исключений - дело хорошее, но далеко не всегда нужное. Есть куча вариантов программ, где не используется SEH или по ненадобности, или по невозможности (мануалмап). И тут гораздо выгоднее смотрится возможность еще сильнее надурачить реверсера, нежели иметь постоянную поддержку сеха там где оно не требуется.

Re: Стелс-режим

Posted: Thu Oct 08, 2020 8:15 am
by Cyber
Есть куча вариантов программ, где не используется SEH или по ненадобности, или по невозможности

А еще есть куча мест где SEH используется, а Вы даже об этом и не знаете (даже если в Вашем коде его явно нет), так что игнорировать работу этого механизма крайне не желательно и чревато.
Больше скажу в некоторых местах своей программы пришлось подставатся под фичи VMP, чтобы не падало.

Re: Стелс-режим

Posted: Thu Oct 08, 2020 1:52 pm
by 00p$
Cyber wrote:А еще есть куча мест где SEH используется, а Вы даже об этом и не знаете (даже если в Вашем коде его явно нет), так что игнорировать работу этого механизма крайне не желательно и чревато.


Если мозги на месте, можешь проконтролировать создание своего бинарника так, чтоб в нем не было скрытых сюрпризов. Для скрипт-кидди, не знающих что им нужно, можно добавить активный по-умолчанию чекбокс "Полноценная поддержка любых программ" или что-то такое, что блокировало бы опасные фичи. А обрезать из-за этого функционал для всех - бред.