![]() |
eXeL@B —› Вопросы новичков —› VST Plugins (Audio) |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 21 октября 2014 19:31 · Личное сообщение · #1 доброго времени суток. никогда не связывался со взломом dll на примере VST плагинов к всевозможным аудио-хостам. очень хотелось бы получить хоть какое-либо представление о том, с чего начать в данном конкретном случае. информации в открытом доступе нигде нет, - поиск по просторам ни к чему не привёл. был бы премного благодарен за любого рода информацию. PS. несколько не к моему случаю, ибо продвинутый вопрос, но если есть кто в этой теме (аудио) и имеет знание - в чём-же всё-таки такая сложность с "PACE" (ilok) защитой ? до сих пор никто её не смог обойти. ![]() |
|
Создано: 21 октября 2014 19:35 · Личное сообщение · #2 |
|
Создано: 21 октября 2014 19:39 · Личное сообщение · #3 exT1m пишет: чень хотелось бы получить хоть какое-либо представление о том, с чего начать в данном конкретном случае. exT1m пишет: в чём-же всё-таки такая сложность с "PACE" (ilok) защитой ? до сих пор никто её не смог обойти. Эффект неуловимого Джо. ![]() |
|
Создано: 21 октября 2014 19:42 · Поправил: exT1m · Личное сообщение · #4 сложность в представлении - с чего начать в данном случае. грузить dll в (моём случае) олю ? хм, кажется не лучшей идеей.. в теории вижу так: отлаживать сам хост, грузить плагин, бряк на entry и поехали.. или ? Добавлено спустя 3 минуты TryAga1n пишет: https://exelab.ru/kid.php не хочу показаться бестактным, но пару софтин и игр доводилось крякать, представление об отладке имеется. тут вопрос конкретно о dll типажа VST. ![]() |
|
Создано: 21 октября 2014 20:43 · Поправил: alexpol · Личное сообщение · #5 Качаешь SAVIHost нужной битности и запускаешь через него а Олли. Пардон, хотел сказать VST2 или VST3 ![]() |
|
Создано: 21 октября 2014 20:50 · Личное сообщение · #6 exT1m пишет: в чём-же всё-таки такая сложность с "PACE" (ilok) защитой ? до сих пор никто её не смог обойти. у старого айлок1 был только конверт - под маком практически в автоматическом режиме распаковывался. У нового айлок2 (иногда и под конвертом) тысячи проверок целосности - отломать их все нереально ![]() exT1m пишет: грузить dll в (моём случае) грузить в это http://www.hermannseib.com/english/savihost.htm и гонять под олькой начиная с VSTMain ![]() |
|
Создано: 21 октября 2014 21:12 · Личное сообщение · #7 alexpol, спасибо. Alf пишет: грузить в это http://www.hermannseib.com/english/savihost.htm и гонять под олькой начиная с VSTMain благодарю за весьма развёрнутый ответ ! Alf пишет: у старого айлок1 был только конверт - под маком практически в автоматическом режиме распаковывался. У нового айлок2 (иногда и под конвертом) тысячи проверок целосности - отломать их все нереально Но бывает айлок прикручивают как попало и тогда он отламывается элементарной правкой нескольких байтов ;) т.е, к примеру, dll vst защищённая ilok2: проверка лицензии на самом usb\компе\донгле не идёт в самом начале, при её загрузке, а разбита на многочисленное число проверок в течении всей dll ? и особенно интересен момент "кривой прикрутки", если не секрет, разумеется ;) ![]() |
|
Создано: 22 октября 2014 21:41 · Личное сообщение · #8 проверка лицензии идет вначале и она довольно простая и легко ломается - проблему составляет защита от взлома, представляющая собой проверку целостности кода. Точнее этих защит две - первая это проверка цифровой подписи PACE, причем иногда проверять ее может даже хост и если она невалидная (плагин крякнут), то хост просто откажется плагин загружать. Вторая защита это проверка целостности отдельных мелких участков кода - причем случайных. Буквально в начале каждой функции запихнута эта проверка (иногда до 80% кода самой функции) и таких проверок сотни или тысячи (в зависимости от размера бинарника). Сами процедуры проверки имеют более сотни вариаций кода и проблематично даже составить таблицу масок для батч-патча. По поводу кривой прикрутки - бывает проверку целостности кода вообще не включают; изредка бывает включают проверку целостности только на функцию лицензирования - тода достаточно эту функцию просто перепрыгнуть; бывает на больших файлах накрывают проверкой не весь код и иногда можно найти место для патча, которое не проверяется (защита лицензии то простая и вариантов ее отлома множество) ![]() |
|
Создано: 22 октября 2014 22:41 · Личное сообщение · #9 |
|
Создано: 23 октября 2014 22:20 · Личное сообщение · #10 я же написал - проверка лицензии простая, но только изменишь хоть один байт в теле, так сразу получишь jmp e?x на "cannot run because it is corrupted." - и таких джампов там тысяча, либо джамп на "application has been compromised" - эти вторые попроще и к ним порой даже можно маски для батч-патча подобрать. Протулзы 9 и 10 на маке так и работают под дебаггером - на входе некоторых функций бряки и сразу дается нужный ответ с ретурном, а код софта остается нетронутым. ПТ 11 дополнительно накрыт конвертом и поэтому этот финт ушами с ним уже не проходит ![]() |
|
Создано: 23 октября 2014 23:00 · Поправил: exT1m · Личное сообщение · #11 да нет, опыт по поводу плагина поставил - там не обход лицензии, кое-что другое, довольно странное. видео отправил. весьма интересна причина такой реакции.. pro tools есть 10 и 11 лицензии, так что касательного него я никаких манипуляций не планировал, интерес в этом плане лишь к плагинам. Alf пишет: cannot run because it is corrupted. уже натыкался многократно. причём, даже когда ничего не меняешь, - при отладке просто ставишь бряк и грузишь dll - он уже выкидывает с данным текстом.. в большинстве участков кода. ![]() |
|
Создано: 26 октября 2014 05:05 · Личное сообщение · #12 Alf пишет: эти вторые попроще и к ним порой даже можно маски для батч-патча подобрать проще - в каком аспекте ? .. батч-патч - не знакомый термин для меня, поисковик также не поделился информацией, был бы благодарен за ликбез ;) и.. хочу подвести итог касательно pace защиты (ибо ответ по отладке самих vst был дан в самом начале) вопросом: касательно обхода её у плагинов, причина по которой они до сих пор не взломанные\нет в шаре - тут всё утыкается не в сложность, а в объёмы работ, - я правильно понял ? двумя словами - переправить две тысячи джампов указывающих на ".. is corrupted" ? и возможно столько же проверок лицензии в ходе исполнения плагина (предположение). ![]() |
|
Создано: 26 октября 2014 23:43 · Личное сообщение · #13 не - кроме первой, проверок лицензии больше нет - только туева хуча проверок целосности. А батч-патчем я называю патч хекс-редактором с помощью скрипта по маске (wildcards) - но масок тоже получается под сотню и всегда есть опасность, что с маской совпадет и какой-то полезный код ![]() ![]() |
|
Создано: 27 октября 2014 22:23 · Поправил: exT1m · Личное сообщение · #14 анализирую несколько дней плагин с бандла Sоftubе - пришёл к точке где: - либо происходит загрузка самого плагина - либо случается распаковка пэйсовским пакером - либо как-раз таки идёт чисто проверка на целостность (причём срабатывает .. corupted даже в случае бряка, если определённая часть этого кода выполнена) третий вариант случается в любом случае, вопрос лишь - отдельная это, специально вызываемая проверка, или код, заключённый в один (?) из первых двух вариантов. но самое интересное тут - происходит эта процедура в цикле (лупе) и переменные возвращаются в ретёрн (ret), вместо джампа. ещё есть предположение что загрузка самого кода плагина происходит в цикле и в нём, время от времени, отдельно вставляются проверки на сохранность кода. был бы крайне благодарен, если кто-то с опытом смог бы посмотреть что происходит в этом цикле, т.к он довольно большой и я не могу понять что в нём происходит целиком. ссылка: http://sendfile.su/1040770 адрес, после которого идёт цикл (5 шагов вниз после него): 609EF7C8 гружу через savi, но можно и просто через loaddll из оли. ![]() |
|
Создано: 28 октября 2014 00:25 · Личное сообщение · #15 |
|
Создано: 28 октября 2014 00:49 · Поправил: exT1m · Личное сообщение · #16 Alf пишет: плагин грузится каждій раз по другому адресу полагаю, на разных машинах - разный, т.к у меня адреса не меняются что при загрузке через savi, что через loaddll. Alf пишет: Изучай код в IDA - там всё хорошо видно прямо сейчас и займусь этим. Alf пишет: Софтюб сейчас не использует конверт а это - супер-хорошая новость. впрочем, у меня сразу было подозрение на то что их плагины не запакованы, чисто в сравнении, после того как я увидел "кошмар" в плагах от sоundtоys. ---- *добавлено*: адрес меняется всё-же, первые 4 байта в нём, но раз на раз не приходится. иногда по 4 раза один и тот же, затем - начинает менять. ![]() |
|
Создано: 29 октября 2014 21:21 · Поправил: exT1m · Личное сообщение · #17 всё-равно не могу с точностью установить что происходит в цикле. в принципе, что с IDA, что с олей - анализируя с точки entry и до момента этого цикла - всё было понятно практически сразу: идёт загрузка фрэймворка и некоторых microsoft visual c++ элементов.. но как доходит до этого цикла - не могу понять :\ похоже на то что в нём всё-таки выполняется основной код плагина (во время его загрузки) и в нём, как я описывал выше, - происходят проверки на целостность. время от времени. а может нет. может моя ошибка заключается в том, что начал не с того места смотреть, хмм. помощь с разбором происходящего в цикле весьма актуальна и была бы крайне к стати. ![]() ![]() |
|
Создано: 29 октября 2014 23:33 · Личное сообщение · #18 как ты умудрился в иде с неправильными адресами проанализировать? - ІДА длл всегда по 10000000 грузит. И этот код никакого отношения к айлоку не имеет - скорее всего ты в него уже по пути на exit попадаешь. А смотреть начинать надо не с энтри, а с VSTPluginMain или с GetPluginFactory (там VST2 & VST3 форматы в одном флаконе) - практически сразу идут тонны айлоковского мусора - до 80% каждой функции. ![]() |
|
Создано: 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:
и на 8-10 шагов выше всегда будет джамп, делающий проверку ;) осталось подправить 911 таких джампов на ESI.. и ещё пару тысяч с ECX, EDX и EDI. некоторые должны быть всегда включены, некоторые - выключены ![]() можешь сам проверить - поискать команды: jmp esi; jmp edi итд. они и к ним прилегающие функции относятся исключительно к отправке на эту ошибку. есть подозрение что за исключением ECX - замечал вне контекста. ![]() |
|
Создано: 30 октября 2014 21:35 · Личное сообщение · #20 exT1m пишет: не могу поставить на них брэйкпоинты перед код изучай в дизасемблере - дебаггер нужен только посмотреть некоторые значения регистров в интересных местах. exT1m пишет: можешь сам проверить - поискать команды зачем мне искать-проверять - именно это несколько дней я и пытаюсь тебе растолковать ;) exT1m пишет: что за исключением ECX если перед этим идет add ecx, 9 то это прыжок через три байта мусора - там вообще в коде много мусора, чтоб сбить с толку дизасемблер ЗЫ потренируйся на плагинах от XILS-Lab, IOSONO или VocALign - там айлок попроще прикручен - достаточно обеспечить возврат из функции pace::fusion::Ilok2LicenseCallbackHandler::explicitLicenseCheck(bool) единицы в еах ![]() |
|
Создано: 30 октября 2014 23:57 · Поправил: exT1m · Личное сообщение · #21 Alf пишет: если перед этим идет add ecx, 9 то это прыжок через три байта мусора - там вообще в коде много мусора, чтоб сбить с толку дизасемблер а я этот мусор даже не вижу. у меня это выглядит вот так: Code:
Alf пишет: потренируйся на плагинах от XILS-Lab, IOSONO или VocALign вокалайн самый интересный из этих вариантов, с ним займусь ;) но если спрашивать касательно плагинов что интересуют, немного оффтопа, - только Sоftubе и Sоundtоys. мог бы быть Slаte, но скупил все их плаги на распродаже ;) на первые два цены чересчур неадекватные. ![]() |
|
Создано: 17 декабря 2014 04:20 · Поправил: exT1m · Личное сообщение · #22 хочу поднять тему спустя время. всё-таки, я полагаю, как минимум в русском коммьюнити (мб и не только), в открытом доступе - эта тема сейчас наиболее информативная, касательно отладки защиты PACE. т.е хотя бы даёт представление в чём основная проблема и как выглядит, с примерами (не учитывая инфу о протекторе и его отладке, ибо применяется он не в каждом случае). очень хотелось бы услышать размышления более опытных людей на тему: какие решения можно придумать в такой ситуации. кроме перебора каждого проверочного джампа вручную. должно ведь быть некое решение дилеммы. ps. за себя ломать ничего и никого не прошу естественно, да и по содержании темы, я думаю, это видно. ![]() |
|
Создано: 17 декабря 2014 22:17 · Личное сообщение · #23 |
|
Создано: 18 декабря 2014 02:55 · Личное сообщение · #24 |
|
Создано: 18 декабря 2014 21:05 · Личное сообщение · #25 |
|
Создано: 18 декабря 2014 22:11 · Поправил: exT1m · Личное сообщение · #26 да, без ПТ у меня работа не пойдёт. да и в любом случае - столь большого опыта по написанию эмулей - тоже нет. Slаte VМR вышел - он работает как рэк с 1 бесплатным модулем, 4 остальных - платные. думал - мб модули поглядеть на потенциальный кряк, а они оказались простыми .dll (с другим расширением), как VST плагины, подгружаемые рэком. полная PACE защита, кроме протектора. но вот что интересно - Sоundtоys выпускают 5 версию своих плагинов в этом\следующем месяце.. одним из главных "нововведений" является отсутствие обязательного донгла ilok, как это было раньше. они по-прежнему будут использовать PACE, только теперь появится вариант регистрации лицензии на компьютере. т.е суммарно 2 способа реги: машина и ilok (опционально). есть какая-либо инфа касательно реги через комп ? - по-идее, отковырять защиту\подменить проверку станет проще. ![]() |
|
Создано: 19 декабря 2014 22:46 · Личное сообщение · #27 софтовая активация айлока была всегда - но не все вендоры разрешали ее использование. Но после того, как 5 лет тому SND сделали универсальный патчер для таких плагов, вендоры и вовсе стали избегать софтовой активации и начали возвращаться к ней только недавно. Напр. у новых плагинов Eventide активация двумя способами - летом они по акции пару лицензий на шару раздавали. Она (активация) состоит из туевой хучи меток в реестре, файлах с рандомными названиями в системных папках и, главное, метках в файловых стримах NTFS (поэтому айлок не работает на системах установленных на FAT). ![]() |
|
Создано: 20 декабря 2014 00:29 · Поправил: exT1m · Личное сообщение · #28 Alf пишет: Eventide активация двумя способами - летом они по акции пару лицензий на шару раздавали Ultrachannel, да, себе захватил, ради microshift'a. Alf пишет: 5 лет тому SND сделали универсальный патчер для таких плагов полагаю, он уже давно не в действии, т.к обновлений было много с тех пор. да и всю систему под Ilok 2 и его метод лицензирования переписали. главный интересующий момент заключается в следующем: будет ли вообще смысл дёргаться на этот счёт ? касательно активации на машине. просто защиту PACE, что в плагинах - разобрали публично с примером, там всё ясно: тысячи проверок целостности. надо либо руками сидеть и править, либо изменять подход (всякие эмули, либо ещё что-то), как я понял. но что касается активации на PC - всё ли настолько запущено, как в первом случае ? - стоит ли париться, простыми словами ? ![]() |
|
Создано: 20 декабря 2014 22:35 · Личное сообщение · #29 exT1m пишет: полагаю, он уже давно не в действии, для того в айлоке проверку целостности и ввели, чтоб никакие патчеры не действовали exT1m пишет: да и всю систему под Ilok 2 и его метод лицензирования переписали. переписывать начали еще у агонизирующего айлок 1 - из-за группы XVX, сделавшей автоматический распаковщик, поменяли формат конверта exT1m пишет: но что касается активации на PC - всё ли настолько запущено, как в первом случае ? если сможешь разобрать алго, то тебе будет уже всё равно - написать свой эмулятор универсального сервера лицензий или генерить отдельные лицензии и внедрять их в систему ;) ![]() |
|
Создано: 24 декабря 2014 08:44 · Личное сообщение · #30 |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› VST Plugins (Audio) |