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

 eXeL@B —› Вопросы новичков —› VST Plugins (Audio)
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 21 октября 2014 19:31
· Личное сообщение · #1

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

был бы премного благодарен за любого рода информацию.

PS. несколько не к моему случаю, ибо продвинутый вопрос, но если есть кто в этой теме (аудио) и имеет знание - в чём-же всё-таки такая сложность с "PACE" (ilok) защитой ? до сих пор никто её не смог обойти.



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

Создано: 21 октября 2014 19:35
· Личное сообщение · #2

А в чем, собственно, сложность ? VST Плагин работает как и любая другая длл, подгружаемая программой.Один VST синтер я было даже кейгенил.

-----
TEST YOUR MIGHT




Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 21 октября 2014 19:39
· Личное сообщение · #3

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

https://exelab.ru/kid.php

exT1m пишет:
в чём-же всё-таки такая сложность с "PACE" (ilok) защитой ? до сих пор никто её не смог обойти.

Эффект неуловимого Джо.



Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 21 октября 2014 19:42 · Поправил: exT1m
· Личное сообщение · #4

сложность в представлении - с чего начать в данном случае. грузить dll в (моём случае) олю ? хм, кажется не лучшей идеей.. в теории вижу так: отлаживать сам хост, грузить плагин, бряк на entry и поехали.. или ?

Добавлено спустя 3 минуты
TryAga1n пишет:
https://exelab.ru/kid.php

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



Ранг: 29.8 (посетитель), 9thx
Активность: 0.020
Статус: Участник

Создано: 21 октября 2014 20:43 · Поправил: alexpol
· Личное сообщение · #5

Качаешь SAVIHost нужной битности и запускаешь через него а Олли.
Пардон, хотел сказать VST2 или VST3

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

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

Создано: 21 октября 2014 20:50
· Личное сообщение · #6

exT1m пишет:
в чём-же всё-таки такая сложность с "PACE" (ilok) защитой ? до сих пор никто её не смог обойти.


у старого айлок1 был только конверт - под маком практически в автоматическом режиме распаковывался. У нового айлок2 (иногда и под конвертом) тысячи проверок целосности - отломать их все нереально Но бывает айлок прикручивают как попало и тогда он отламывается элементарной правкой нескольких байтов ;)

exT1m пишет:
грузить dll в (моём случае)

грузить в это http://www.hermannseib.com/english/savihost.htm и гонять под олькой начиная с VSTMain

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

Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 21 октября 2014 21:12
· Личное сообщение · #7

alexpol, спасибо.

Alf пишет:
грузить в это http://www.hermannseib.com/english/savihost.htm и гонять под олькой начиная с VSTMain

благодарю за весьма развёрнутый ответ !

Alf пишет:
у старого айлок1 был только конверт - под маком практически в автоматическом режиме распаковывался. У нового айлок2 (иногда и под конвертом) тысячи проверок целосности - отломать их все нереально Но бывает айлок прикручивают как попало и тогда он отламывается элементарной правкой нескольких байтов ;)

т.е, к примеру, dll vst защищённая ilok2: проверка лицензии на самом usb\компе\донгле не идёт в самом начале, при её загрузке, а разбита на многочисленное число проверок в течении всей dll ? и особенно интересен момент "кривой прикрутки", если не секрет, разумеется ;)



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

Создано: 22 октября 2014 21:41
· Личное сообщение · #8

проверка лицензии идет вначале и она довольно простая и легко ломается - проблему составляет защита от взлома, представляющая собой проверку целостности кода. Точнее этих защит две - первая это проверка цифровой подписи PACE, причем иногда проверять ее может даже хост и если она невалидная (плагин крякнут), то хост просто откажется плагин загружать. Вторая защита это проверка целостности отдельных мелких участков кода - причем случайных. Буквально в начале каждой функции запихнута эта проверка (иногда до 80% кода самой функции) и таких проверок сотни или тысячи (в зависимости от размера бинарника). Сами процедуры проверки имеют более сотни вариаций кода и проблематично даже составить таблицу масок для батч-патча. По поводу кривой прикрутки - бывает проверку целостности кода вообще не включают; изредка бывает включают проверку целостности только на функцию лицензирования - тода достаточно эту функцию просто перепрыгнуть; бывает на больших файлах накрывают проверкой не весь код и иногда можно найти место для патча, которое не проверяется (защита лицензии то простая и вариантов ее отлома множество)

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

Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 22 октября 2014 22:41
· Личное сообщение · #9

Alf, по поводу хоста - Pro Tools 11 - да, проверяет. знаю только его пример. благодарю за такую подробную информацию, есть чего взять на размышление.

PS. загляни в ЛС. довольно интересный опыт провёл.



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

Создано: 23 октября 2014 22:20
· Личное сообщение · #10

я же написал - проверка лицензии простая, но только изменишь хоть один байт в теле, так сразу получишь jmp e?x на "cannot run because it is corrupted." - и таких джампов там тысяча, либо джамп на "application has been compromised" - эти вторые попроще и к ним порой даже можно маски для батч-патча подобрать.
Протулзы 9 и 10 на маке так и работают под дебаггером - на входе некоторых функций бряки и сразу дается нужный ответ с ретурном, а код софта остается нетронутым. ПТ 11 дополнительно накрыт конвертом и поэтому этот финт ушами с ним уже не проходит



Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 23 октября 2014 23:00 · Поправил: exT1m
· Личное сообщение · #11

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

pro tools есть 10 и 11 лицензии, так что касательного него я никаких манипуляций не планировал, интерес в этом плане лишь к плагинам.

Alf пишет:
cannot run because it is corrupted.

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



Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 26 октября 2014 05:05
· Личное сообщение · #12

Alf пишет:
эти вторые попроще и к ним порой даже можно маски для батч-патча подобрать

проще - в каком аспекте ? .. батч-патч - не знакомый термин для меня, поисковик также не поделился информацией, был бы благодарен за ликбез ;)

и.. хочу подвести итог касательно pace защиты (ибо ответ по отладке самих vst был дан в самом начале) вопросом: касательно обхода её у плагинов, причина по которой они до сих пор не взломанные\нет в шаре - тут всё утыкается не в сложность, а в объёмы работ, - я правильно понял ? двумя словами - переправить две тысячи джампов указывающих на ".. is corrupted" ? и возможно столько же проверок лицензии в ходе исполнения плагина (предположение).



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

Создано: 26 октября 2014 23:43
· Личное сообщение · #13

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

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

Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 27 октября 2014 22:23 · Поправил: exT1m
· Личное сообщение · #14

анализирую несколько дней плагин с бандла Sоftubе - пришёл к точке где:
- либо происходит загрузка самого плагина
- либо случается распаковка пэйсовским пакером
- либо как-раз таки идёт чисто проверка на целостность (причём срабатывает .. corupted даже в случае бряка, если определённая часть этого кода выполнена)

третий вариант случается в любом случае, вопрос лишь - отдельная это, специально вызываемая проверка, или код, заключённый в один (?) из первых двух вариантов. но самое интересное тут - происходит эта процедура в цикле (лупе) и переменные возвращаются в ретёрн (ret), вместо джампа. ещё есть предположение что загрузка самого кода плагина происходит в цикле и в нём, время от времени, отдельно вставляются проверки на сохранность кода.

был бы крайне благодарен, если кто-то с опытом смог бы посмотреть что происходит в этом цикле, т.к он довольно большой и я не могу понять что в нём происходит целиком.

ссылка: http://sendfile.su/1040770
адрес, после которого идёт цикл (5 шагов вниз после него): 609EF7C8
гружу через savi, но можно и просто через loaddll из оли.



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

Создано: 28 октября 2014 00:25
· Личное сообщение · #15

плагин грузится каждій раз по другому адресу - поэтому адрес который ты указал неправильный. Изучай код в IDA - там всё хорошо видно, т.к. Софтюб сейчас не использует конверт



Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 28 октября 2014 00:49 · Поправил: exT1m
· Личное сообщение · #16

Alf пишет:
плагин грузится каждій раз по другому адресу

полагаю, на разных машинах - разный, т.к у меня адреса не меняются что при загрузке через savi, что через loaddll.

Alf пишет:
Изучай код в IDA - там всё хорошо видно

прямо сейчас и займусь этим.

Alf пишет:
Софтюб сейчас не использует конверт

а это - супер-хорошая новость. впрочем, у меня сразу было подозрение на то что их плагины не запакованы, чисто в сравнении, после того как я увидел "кошмар" в плагах от sоundtоys.
----
*добавлено*: адрес меняется всё-же, первые 4 байта в нём, но раз на раз не приходится. иногда по 4 раза один и тот же, затем - начинает менять.



Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 29 октября 2014 21:21 · Поправил: exT1m
· Личное сообщение · #17

всё-равно не могу с точностью установить что происходит в цикле. в принципе, что с IDA, что с олей - анализируя с точки entry и до момента этого цикла - всё было понятно практически сразу: идёт загрузка фрэймворка и некоторых microsoft visual c++ элементов.. но как доходит до этого цикла - не могу понять :\ похоже на то что в нём всё-таки выполняется основной код плагина (во время его загрузки) и в нём, как я описывал выше, - происходят проверки на целостность. время от времени. а может нет. может моя ошибка заключается в том, что начал не с того места смотреть, хмм. помощь с разбором происходящего в цикле весьма актуальна и была бы крайне к стати.





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

Создано: 29 октября 2014 23:33
· Личное сообщение · #18

как ты умудрился в иде с неправильными адресами проанализировать? - ІДА длл всегда по 10000000 грузит. И этот код никакого отношения к айлоку не имеет - скорее всего ты в него уже по пути на exit попадаешь. А смотреть начинать надо не с энтри, а с VSTPluginMain или с GetPluginFactory (там VST2 & VST3 форматы в одном флаконе) - практически сразу идут тонны айлоковского мусора - до 80% каждой функции.



Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 30 октября 2014 00:07 · Поправил: exT1m
· Личное сообщение · #19

Alf пишет:
И этот код никакого отношения к айлоку не имеет

напрямую к айлоку - нет.

Alf пишет:
скорее всего ты в него уже по пути на exit попадаешь.

тоже нет. это цикл, в котором происходит загрузка самого плага через call eax. цикл крутится более 100 раз и подгружает разные части загрузочного кода. я пробежался по нескольким десяткам вызовов (основной - там один, но вызывается много раз) - увидел где идёт проверка на целостность и после происходит jmp на jmp на "cannot run because it is corrupted.", jnz перед ним проверочный. но это только одна проверка, их при загрузке плагина много. наверное не открою америку, но проверка заносит данные в ESP и EBP и сверяет на совпадение: не совпали - ошибка ".. is currupted", terminateprocess; совпали ? - пропускаем, файл не изменён.

Alf пишет:
как ты умудрился в иде с неправильными адресами проанализировать?

эти адреса выводит дебагер. скрин с пешего путешествия через F7-F8.

Alf пишет:
с VSTPluginMain или с GetPluginFactory

не могу поставить на них брэйкпоинты перед\при загрузкой\ке, т.к выводит "cannot run because it is corrupted" в таком сценарии.

/**добавлено**/
вот так выглядит переход на ошибку целостности, могу сказать со 100%:
Code:
  1. CALL рандомный
  2. POP EAX (изредка меняется*)
  3. - тут могут появляться рандомные математические команды, могут не появляться.
  4. SUB EAX (*и тут),0xE
  5. ADD ESI,EAX (*и тут, что логично)
  6. JMP NEAR ESI

и на 8-10 шагов выше всегда будет джамп, делающий проверку ;) осталось подправить 911 таких джампов на ESI.. и ещё пару тысяч с ECX, EDX и EDI. некоторые должны быть всегда включены, некоторые - выключены
можешь сам проверить - поискать команды: jmp esi; jmp edi итд. они и к ним прилегающие функции относятся исключительно к отправке на эту ошибку. есть подозрение что за исключением ECX - замечал вне контекста.



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

Создано: 30 октября 2014 21:35
· Личное сообщение · #20

exT1m пишет:
не могу поставить на них брэйкпоинты перед

код изучай в дизасемблере - дебаггер нужен только посмотреть некоторые значения регистров в интересных местах.
exT1m пишет:
можешь сам проверить - поискать команды

зачем мне искать-проверять - именно это несколько дней я и пытаюсь тебе растолковать ;)
exT1m пишет:
что за исключением ECX

если перед этим идет add ecx, 9 то это прыжок через три байта мусора - там вообще в коде много мусора, чтоб сбить с толку дизасемблер

ЗЫ потренируйся на плагинах от XILS-Lab, IOSONO или VocALign - там айлок попроще прикручен - достаточно обеспечить возврат из функции pace::fusion::Ilok2LicenseCallbackHandler::explicitLicenseCheck(bool) единицы в еах

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

Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 30 октября 2014 23:57 · Поправил: exT1m
· Личное сообщение · #21

Alf пишет:
если перед этим идет add ecx, 9 то это прыжок через три байта мусора - там вообще в коде много мусора, чтоб сбить с толку дизасемблер

а я этот мусор даже не вижу. у меня это выглядит вот так:
Code:
  1. ADD ECX,0x9
  2. JMP NEAR ECX
  3. DB CD
  4. DB 2D  ; CHAR '-'
  5. DB CD

Alf пишет:
потренируйся на плагинах от XILS-Lab, IOSONO или VocALign

вокалайн самый интересный из этих вариантов, с ним займусь ;) но если спрашивать касательно плагинов что интересуют, немного оффтопа, - только Sоftubе и Sоundtоys. мог бы быть Slаte, но скупил все их плаги на распродаже ;) на первые два цены чересчур неадекватные.



Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 17 декабря 2014 04:20 · Поправил: exT1m
· Личное сообщение · #22

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

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

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



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

Создано: 17 декабря 2014 22:17
· Личное сообщение · #23

exT1m пишет:
какие решения можно придумать в такой ситуации.

напр. R2R для плагинов iZotope делают псевдоэмуляторы айлока ;)



Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 18 декабря 2014 02:55
· Личное сообщение · #24

Alf пишет:
iZotope

не использую их, но ща глянул - там ilok не единственный способ регистрации плагина. хм, да и странно это - под izotope эмуль донгла пишут, а весь остальной софт, что на айлоке - приват, выходит ?



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

Создано: 18 декабря 2014 21:05
· Личное сообщение · #25

у каждого изотопа свой персональный переходник к айлоку - вот его и меняют на персональный ємулятор. У софтюбов переходников нет и эмулятор надо ставить вместо общего сервера лицензий - но тогда твой Протулз не запустится, хотя в какой-нибудь Нуенде плагины заработают ;)



Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 18 декабря 2014 22:11 · Поправил: exT1m
· Личное сообщение · #26

да, без ПТ у меня работа не пойдёт. да и в любом случае - столь большого опыта по написанию эмулей - тоже нет.

Slаte VМR вышел - он работает как рэк с 1 бесплатным модулем, 4 остальных - платные. думал - мб модули поглядеть на потенциальный кряк, а они оказались простыми .dll (с другим расширением), как VST плагины, подгружаемые рэком. полная PACE защита, кроме протектора.

но вот что интересно - Sоundtоys выпускают 5 версию своих плагинов в этом\следующем месяце.. одним из главных "нововведений" является отсутствие обязательного донгла ilok, как это было раньше. они по-прежнему будут использовать PACE, только теперь появится вариант регистрации лицензии на компьютере. т.е суммарно 2 способа реги: машина и ilok (опционально).

есть какая-либо инфа касательно реги через комп ? - по-идее, отковырять защиту\подменить проверку станет проще.



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

Создано: 19 декабря 2014 22:46
· Личное сообщение · #27

софтовая активация айлока была всегда - но не все вендоры разрешали ее использование. Но после того, как 5 лет тому SND сделали универсальный патчер для таких плагов, вендоры и вовсе стали избегать софтовой активации и начали возвращаться к ней только недавно. Напр. у новых плагинов Eventide активация двумя способами - летом они по акции пару лицензий на шару раздавали. Она (активация) состоит из туевой хучи меток в реестре, файлах с рандомными названиями в системных папках и, главное, метках в файловых стримах NTFS (поэтому айлок не работает на системах установленных на FAT).

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

Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 20 декабря 2014 00:29 · Поправил: exT1m
· Личное сообщение · #28

Alf пишет:
Eventide активация двумя способами - летом они по акции пару лицензий на шару раздавали

Ultrachannel, да, себе захватил, ради microshift'a.

Alf пишет:
5 лет тому SND сделали универсальный патчер для таких плагов

полагаю, он уже давно не в действии, т.к обновлений было много с тех пор. да и всю систему под Ilok 2 и его метод лицензирования переписали.

главный интересующий момент заключается в следующем: будет ли вообще смысл дёргаться на этот счёт ? касательно активации на машине. просто защиту PACE, что в плагинах - разобрали публично с примером, там всё ясно: тысячи проверок целостности. надо либо руками сидеть и править, либо изменять подход (всякие эмули, либо ещё что-то), как я понял. но что касается активации на PC - всё ли настолько запущено, как в первом случае ? - стоит ли париться, простыми словами ?



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

Создано: 20 декабря 2014 22:35
· Личное сообщение · #29

exT1m пишет:
полагаю, он уже давно не в действии,

для того в айлоке проверку целостности и ввели, чтоб никакие патчеры не действовали
exT1m пишет:
да и всю систему под Ilok 2 и его метод лицензирования переписали.

переписывать начали еще у агонизирующего айлок 1 - из-за группы XVX, сделавшей автоматический распаковщик, поменяли формат конверта
exT1m пишет:
но что касается активации на PC - всё ли настолько запущено, как в первом случае ?

если сможешь разобрать алго, то тебе будет уже всё равно - написать свой эмулятор универсального сервера лицензий или генерить отдельные лицензии и внедрять их в систему ;)



Ранг: 5.0 (гость)
Активность: 0.010
Статус: Участник

Создано: 24 декабря 2014 08:44
· Личное сообщение · #30

Alf пишет:
если сможешь разобрать алго, то тебе будет уже всё равно

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


. 1 . 2 . >>
 eXeL@B —› Вопросы новичков —› VST Plugins (Audio)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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