Сейчас на форуме: (+5 невидимых)

 eXeL@B —› Протекторы —› Создание сигнатуры для мутированного VMProtect'ом кода
<< . 1 . 2 . 3 . 4 . >>
Посл.ответ Сообщение

Ранг: 2.0 (гость)
Активность: 0.01=0.01
Статус: Участник

Создано: 26 марта 2020 18:25
· Личное сообщение · #1

Здравствуйте!
Есть защищенный мутированный VMProtect'ом код(без виртуализации), версия 3+, нужно сделать сигнатуру для этого кода, при этом каждый билд программы генерирует рандомный мусор и рандомные регистры кода, но алгоритм остается тем же. Каждый билд программы сигнатура перестает быть рабочей, а нужно сделать ее универсальной, алгоритм кода не меняется.
Может быть, есть какие нибудь решения для моей проблемы?
Заранее спасибо!



Ранг: -7.3 (нарушитель)
Активность: 0.010.08
Статус: Участник

Создано: 28 марта 2020 10:34
· Личное сообщение · #2

Сигнатура делается легко!

Если кто не знал, то мутация происходит только тогда кода, когда программа упакованная VMProtect-том запущена, а никогда он не запущена.

Берете в руки дизассемблер и берете важные байты участки кода(без адресов), и все.




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 28 марта 2020 12:25
· Личное сообщение · #3

difexacaw пишет:
Поэтому ничего со строкой сделать нельзя.

у тебя по ходу о строковых данных, знания ограничены боксом в крякми...
а если это имена ресурсов, битмапы, иконки?
а если разбор в статике?

-----
Чтобы юзер в нэте не делал,его всё равно жалко..





Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 28 марта 2020 12:38
· Личное сообщение · #4

Vamit

> VMProtectDecryptString

Так это прямая маркировка строк. Их нужно задать, где они храниться будут, в областях криптора, а не данных апп ?
А остальные данные ?

На EP взять контр сумму области данных, это будет сигнатурой ?

Добавлено спустя 1 минуту
Bronco

> а если это имена ресурсов, битмапы, иконки?

Это отдельные ресурсы, не переменные и не константы апп.

Добавлено спустя 6 минут
Вот проверил на последнем вмп(340), данные никак не изменяются после декрипта, оно иначе не может быть

-----
vx





Ранг: 90.1 (постоянный), 89thx
Активность: 0.290.56
Статус: Участник

Создано: 28 марта 2020 15:14 · Поправил: Boostyq
· Личное сообщение · #5

ClockMan пишет:
Есть защищенный мутированный VMProtect'ом код(без виртуализации),

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

FOXHACKBOK пишет:
Если кто не знал, то мутация происходит только тогда кода,

Брысь отсюда, упаковка с образа снимается перед oep проги, но виртуализированный, мутированный код остается как есть, и из билда в билд будет разный

difexacaw пишет:
А остальные данные

Юзер вообще может не пользоваться стандартными функциями, а реализовать свое шифрование под вм, если позволяет ситуации данные можно никогда полностью не расшифровывать. Насчет winapi соглашусь, действительно в этом случае данные как ни крути нужно расшифровать, но это не отменяет того, что данные до этого могли быть зашифрованы.

difexacaw пишет:
Но это не крипт данных, а обфускация

Что за плавающая терминология?
В начале ты заявил что вмпрот "вмп криптует по дефолту ~0-10% кода", в каком смысле это применено? Шифрование - так он шифрует весь образ целиком и обратно перед oep, это не 0-10%, Виртуализаци/мутация - так это вообще другой термин, никак нельзя назвать это криптом.
Теперь ты говоришь что зашифровать данные и расшифровать где нужно это обфускация? Так обфускация это запутывание, при этом обратной операции не происходит вовсе, опять термин мимо кассы, это применимо только к коду в данном контексте
Короче, брось свой vx жаргон и выражайся нормальными терминами, которые всем понятны, а не неси чушь.

-----
В облачке многоточия





Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 28 марта 2020 15:34
· Личное сообщение · #6

Boostyq

> как ни крути нужно расшифровать.

Авер так бы и искал сигны, крутнул виртой(это если хватит числа итераций) и обнаружил постоянную сигну для данных, сканеру вообще без разницы код это или данные.

Добавлено спустя 6 минут
> ~0-10% кода", в каком смысле это применено?

При крипте бинаря, а не дополнительных указателей, строки и прочее что он сам не может узнать из бинаря.

> это не 0-10%

Имеется ввиду на OEP(после декрипта), что в файле не имеет значения.

> Виртуализаци/мутация - так это вообще другой термин, никак нельзя назвать это криптом.

Крипторы это всё в общем.

-----
vx





Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 28 марта 2020 15:51 · Поправил: Bronco
· Личное сообщение · #7

difexacaw пишет:
в общем.

угу...опять слился...шляпа...
разбирать реальный софт, это не возня с крякми..

-----
Чтобы юзер в нэте не делал,его всё равно жалко..





Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 28 марта 2020 15:57 · Поправил: difexacaw
· Личное сообщение · #8

Bronco

Ты себе это в подпись поставь, что бы буквы не тереть лишний раз

Для аргумента приведи пример апп накрытого этим криптом, в котором данные не восстанавливаются и нельзя на них составить сигну.

-----
vx





Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 28 марта 2020 16:16 · Поправил: difexacaw
· Личное сообщение · #9

В качестве криптора вмп сгодится, вирта из за тайминга не может дойти до EP --> Link <--

Интересно что будет если аверам залить сотню семплов, накрытых вмп. Они для него самого сигну создадут

-----
vx





Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 28 марта 2020 16:48 · Поправил: Bronco
· Личное сообщение · #10

difexacaw пишет:
Они для него самого сигну создадут

да ты шО...особено для слитых билдов.// опять шляпа...
как же это они различают, легальный билд от слитого?
да и помнится, ты же утверждал, что не сторонник сигнатур..шО ты в этой теме делаешь хз.
difexacaw пишет:
приведи пример апп накрытого этим криптом,

вот хз как тебе на пальцах...
а вот повторю вопрос. а если это статический анализ?

-----
Чтобы юзер в нэте не делал,его всё равно жалко..





Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 28 марта 2020 17:25 · Поправил: difexacaw
· Личное сообщение · #11

Bronco

> а если это статический анализ?

А что статик.. крипт и нужен что бы статик сигнатуры убирать. Что бы это пройти авер использует вирту.

-----
vx




Ранг: -7.3 (нарушитель)
Активность: 0.010.08
Статус: Участник

Создано: 28 марта 2020 18:42 · Поправил: FOXHACKBOK
· Личное сообщение · #12

Boostyq пишет:
FOXHACKBOK пишет:
Если кто не знал, то мутация происходит только тогда кода,
Брысь отсюда, упаковка с образа снимается перед oep проги, но виртуализированный, мутированный код остается как есть, и из билда в билд будет разный


Ты зеленый, товарищ, раз такие вещи не знаешь!

Ты хоть раз VMProtect распаковывал вручную?

Мне кажется, что ты даже не знаешь, что такое протектор, и как все происходит.

Возьми любой бинарник и ты увидишь, что код в дизассемблере не меняется, ламер, раз код не меняется, то можно вытащить определенные байты по которым можно сделать детект определенного протектора.
Так что, Брысь ты, а не я!

Добавлено спустя 3 минуты
Ты не путай запущенное состояние программы и не запущенное состояние!

Ясно написано, что он хочет чтобы ему сделали сигнатуру, а не распаковать протектор.

Добавлено спустя 5 минут
Я могу найти OEP в любой запротекчиной программы, достаточно знать в каком компиляторе была собрана программа до протекта, а у знать это просто.




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 28 марта 2020 18:56
· Личное сообщение · #13

FOXHACKBOK

> Я могу найти OEP в любой запротекчиной программы

Это серьёзное заявление. Подумай может прежде чем писать такое. Как же ты найдёшь, по сигнатуре около-EP ?

А если она отморфленна как в случае с вмп, придётся в динамике всё обнаружить. И тут возникает вопрос, чем ты будешь трассировать

> ты увидишь, что код в дизассемблере не меняется

Как не меняется.. Он же криптован, после запуска часть декриптуется, часть остаётся морфленной.

-----
vx




Ранг: -7.3 (нарушитель)
Активность: 0.010.08
Статус: Участник

Создано: 28 марта 2020 18:58 · Поправил: FOXHACKBOK
· Личное сообщение · #14

difexacaw пишет:
Это серьёзное заявление. Подумай может прежде чем писать такое. Как же ты найдёшь, по сигнатуре около-EP ?


Я вручную нахожу OEP.

Он меняется, когда программа запущена, а не когда программа не запущена.

Я говорю про сигнатуру в статическом состоянии, а не в запущенном состоянии!!!

Добавлено спустя 3 минуты
OEP найти это проще простого, еще раз заявляю, если кто не знал, это проще простого

Добавлено спустя 5 минут
Есть один секрет как можно найти OEP закрытыми глазами, достаточно знать две WinAPI функции




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 28 марта 2020 19:11
· Личное сообщение · #15

FOXHACKBOK

Как же ты назад по графу пройдёшь без трейса. Поставить останов на пару апи и вернуться по стеку это мало где работает, при этом образ должен быть восстановлен полностью. Если вирта на EP, то её пропустишь, так как из декрипт буфера будет ветвление, про которое ты не знаешь.

-----
vx




Ранг: -7.3 (нарушитель)
Активность: 0.010.08
Статус: Участник

Создано: 28 марта 2020 19:15 · Поправил: FOXHACKBOK
· Личное сообщение · #16

difexacaw пишет:
Как же ты назад по графу пройдёшь без трейса. Поставить останов на пару апи и вернуться по стеку это мало где работает, при этом образ должен быть восстановлен полностью. Если вирта на EP, то её пропустишь, так как из декрипт буфера будет ветвление, про которое ты не знаешь.


У каждого компилятора есть свои способ построения OEP, а значит, что если ты знаешь в каком компиляторе была собрана программа, то у каждого компилятора вход характерен и можно поставить бряки на те функции к которым он обращается раньше, тем самым промотав стек назад ты будешь на OEP.




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 28 марта 2020 19:16 · Поправил: DimitarSerg
· Личное сообщение · #17

Вторую страницу обсуждают коней в вакууме.

Вот во вложении 2 файла с одним и тем же алгоритмом (RC4) и мап-файл для удобства, хотя можете сразу на адрес 00408CA0 прыгать (начало функции, которая содержит мутированный код).
Файл не макован, использован маркер мутации кода.

Задача, как я понимаю, у автора именно такая.

FOXHACKBOK
Создай сигнатуру для детекта алгоритма.

Ну и остальные, кто языком только елозил в теме может показать скилл.

2c02_28.03.2020_EXELAB.rU.tgz - vmp_test.zip

-----
ds


| Сообщение посчитали полезным: ARCHANGEL

Ранг: -7.3 (нарушитель)
Активность: 0.010.08
Статус: Участник

Создано: 28 марта 2020 19:17 · Поправил: FOXHACKBOK
· Личное сообщение · #18

DimitarSerg пишет:
Вторую страницу обсуждают коней в вакууме.

Вот во вложении 2 файла с одним и тем же алгоритмом (RC4) и мап-файл для удобства, хотя можете сразу на адрес 00408CA0 прыгать (начало функции, которая содержит мутированный код).
Файл не макован, использован маркер мутации кода.

Задача, как я понимаю у автора именно такая.

FOXHACKBOK
Создай сигнатуру для детекта алгоритма.

Ну и остальные, кто языком только елозил в теме может показать скилл.

2c02_28.03.2020_EXELAB.rU.tgz - vmp_test.zip





Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 28 марта 2020 19:23 · Поправил: DimitarSerg
· Личное сообщение · #19

FOXHACKBOK

Какую угодно, хоть YARA-base, хоть обычную сигнатурную
Можно даже словами описать, как находить нужный участок кода (с мутированным кодом) с искомым алгоритмом (RC4) в новом бинаре.

-----
ds





Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 28 марта 2020 19:24
· Личное сообщение · #20

DimitarSerg

Слушай заяц а что делать с твоим бинарем, есть секция vmp, но образ не криптован. И что главное для данной темы, у тебя там секция данных, которая останется 403D22 первая ссылка на начало секции. Криптор её не найдёт, облом.

-----
vx




Ранг: -7.3 (нарушитель)
Активность: 0.010.08
Статус: Участник

Создано: 28 марта 2020 19:26
· Личное сообщение · #21

Нет, он не это имел в виду, а детектор упаковщика!




Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 28 марта 2020 19:27
· Личное сообщение · #22

difexacaw пишет:
а что делать с твоим бинарем

Слушай, анимешный перс, точно то же, что и просил автор темы - сигнатуру, с помощью которой можно найти алгоритм (RC4) в мутированном коде.

-----
ds





Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 28 марта 2020 19:37 · Поправил: difexacaw
· Личное сообщение · #23

DimitarSerg

Так у тебя же образ не криптован, статик сигнатура. Или я чего то не понял ?

Если накрыть криптором, то после декрипта данные будут не тронуты, а на код пофиг, даже если он весь отморфится.

-----
vx





Ранг: 253.5 (наставник), 684thx
Активность: 0.260.25
Статус: Участник
radical

Создано: 28 марта 2020 19:43
· Личное сообщение · #24

difexacaw пишет:
Или я чего то не понял ?

Да, ты не внимательно читал или просто не осознал суть вопроса автора и вторую страницу пишешь мемуары, я тебе привел пример, дал сэмплы, есть четка задача: нужна сигнатура для детекта по мутированному коду.

difexacaw пишет:
Если накрыть криптором

А если у бабы выростет кое-что, то она станет дедом, да. Оставь свои фантазии для более сложных задач, не нужно никого и ничего криптовать.

-----
ds





Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 28 марта 2020 19:48 · Поправил: difexacaw
· Личное сообщение · #25

DimitarSerg

> осознал суть вопроса автора

Я понимаю так. Есть слой криптора и нужно создать сигну для криптованного кода. Штатное решение - декрипт через вирту или напрямую запуск, на EP скан данных. Просто ведь ?

Какие то частные колхозные решения, типо использовать механизм крипта для конкретной версии конкретного криптора это не решение, а дичайший хардкод.

> я тебе привел пример, дал сэмплы

Не сказав при этом что с ними делать

> то она станет дедом, да.

Старушка бустик может уйти в деадлок обиду

-----
vx





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 28 марта 2020 19:53
· Личное сообщение · #26

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

-----
2 оттенка серого





Ранг: 90.1 (постоянный), 89thx
Активность: 0.290.56
Статус: Участник

Создано: 28 марта 2020 21:46
· Личное сообщение · #27

f13nd пишет:
если нужна вундервафля

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

DimitarSerg пишет:
Создай сигнатуру для детекта алгоритма.

difexacaw пишет:
Не сказав при этом что с ними делать

Ой, вы только посмотрите на эту бездарную попытку косить под дурачка.
Две страницы пишет свои нубские теории, а как спросили, так не знает что делать лол.
Нам все понятно, слив защитан, проваливай из темы и можешь ничего не создавать.

-----
В облачке многоточия





Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 28 марта 2020 23:00 · Поправил: f13nd
· Личное сообщение · #28

Boostyq пишет:
Все же четко описано, есть код который одинаковый между билдами, но его мутируют вмпротом и нужно реализовать механизм который будет находить адрес этой функции

Там написано, что "нужно сделать сигнатуру для этого кода", причем специально подчеркнуто, что этот алгоритм не меняется. "Механизм, который будет находить" это уже домыслы.

Boostyq пишет:
Сигнатура не обязательно две битовые маски, я делала версию без маски, в качестве неизвестного байта выбирается какой нибудь не использующийся в сигнатуре.

Не понял как это. Любой паттерн, как бы он ни задавался, например '5589E583EC........C9C3', представляет собой 'FFFFFFFFFF00000000FFFF' и '5589E583EC00000000C9C3'. Конъюнкцией с первым значением выделяются значащие биты, сравнением со вторым проверяется совпадение.

-----
2 оттенка серого





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 28 марта 2020 23:18 · Поправил: ARCHANGEL
· Личное сообщение · #29

Предлагаю тотализатор. Ставим за\против Инди, что он осилит\не осилит запилить солюшен для данной таски из поста --> 17 <--

Варианты:
1. Запилит, он же отец.
2. Запилит, но работать солюшен будет только под вин ХР и только у него, но скриншот сделает.
3. Не осилит/ сольётся/ не поймёт/ закончится молодецкий запал/ позовут резко на Васм.
4. Запилит, но выложит сорцы на масм с макросами, которые есть только у него.
5. Запилит, но через 2 года, потому что сейчас мотор не готов/ граф несвязный/ пилится новая сложная таска.

Мне нравится вариант 3, могу 10 баксов поставить.

Играйте с нами, у нас:
- высокие коэффициенты;
- быстрые выплаты;
- море матчасти для ставок (Инди генерит эври вик)

-----
Stuck to the plan, always think that we would stand up, never ran.


| Сообщение посчитали полезным: DimitarSerg


Ранг: 271.2 (наставник), 331thx
Активность: 0.321.49
Статус: Участник

Создано: 28 марта 2020 23:22
· Личное сообщение · #30

ARCHANGEL пишет:
Варианты:

6. запилит что получится, потом будет доказывать, что это и было нужно сделать.

-----
2 оттенка серого


| Сообщение посчитали полезным: Gideon Vi


Ранг: 90.1 (постоянный), 89thx
Активность: 0.290.56
Статус: Участник

Создано: 28 марта 2020 23:53
· Личное сообщение · #31

f13nd пишет:
Не понял как это

Я думала что ты про частоиспользуемую функцию FindPattern, где например паттерн "E8 ?? ?? ?? ??" реализован как байты byte[] { 0xE8, 0x00, 0x00, 0x00, 0x00 } + маска char[] "x????".
Ну и говорю что можно обойтись без маски, сделав первый байт шаблона сигналом для пропуска байта, т.е. { 0xCC, 0xE8, 0xCC, 0xCC, 0xCC, 0xCC }, тогда маску можно убрать.

ARCHANGEL пишет:
он же отец.

Тряпка он, и брехун, ничего он не запилит, в очередной раз хотел пошуметь, но скилла то нет, вообщем ставлю все на зиро.

-----
В облачке многоточия



<< . 1 . 2 . 3 . 4 . >>
 eXeL@B —› Протекторы —› Создание сигнатуры для мутированного VMProtect'ом кода
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати