eXeL@B —› Софт, инструменты —› Ariadne Framework & Deobfuscator |
<< . 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 29 ноября 2011 23:50 · Поправил: reversecode · Личное сообщение · #1 Ariadne – это фреймворк для всех, кто занимается reverse engineering и смежными задачами (анализ вирусов, защита ПО и ее анализ, forensic и т.д.). Во всех этих случаях Ariadne позволит сэкономить существенную часть времени за счет предоставления решения нудных типовых задач. А ведь создание кода, решающего эти нудные типовые задачи, может занимать до 80% времени! При этом никто не застрахован от повторения уже неоднократно совершенных кем- то ошибок, исправление которых отнимает время. Ariadne позволит сэкономить время и творческий потенциал для решения действительно инновационных задач. демо версия http://www.slideshare.net/dschelkunov/on-deobfuscation-in-practice какая то презентация, если кто может скачайте и переложите на нормальный фо ps мне почему то кажется это работа кого то с форума, не? | Сообщение посчитали полезным: mak, vden |
|
Создано: 01 декабря 2011 21:49 · Личное сообщение · #2 Ariadne: Optimized successfully MC: Id = { 0x3, 0x0, 0x0, uninit, uninit }, offset = uninit, size = uninit; MC: Id = { 0x5, 0x0, 0x3e9, uninit, uninit }, offset = uninit, size = 0x0; -------------------------------------------------------------------------------------------------------------- { 0x1, 0x0, 0xc9c82a, uninit, uninit }: FUNC memory_cell ( { 0x5, 0x0, 0x3e9, uninit, uninit } ); -------------------------------------------------------------------------------------------------------------- ----- zzz |
|
Создано: 01 декабря 2011 21:53 · Личное сообщение · #3 |
|
Создано: 01 декабря 2011 21:56 · Поправил: reversecode · Личное сообщение · #4 вообщем заветной картинки before after похоже не будет)) Archer так мы с пониманием просто есть подозрение что проект не дает именно такой или похожей картинки а выдает просто IR текст а хотелось бы - оптимизированый код Archer пишет: Дык плагин асм-код давать и не должен, он должен дать листинг в промежуточном языке, пока что нет и псевдо листинга ждем комментарии и разьяснения автора Ultras это было почти сразу понятно, автор занимается разработкой защит которые здесь же на форуме и ломают На cracklab-е |
|
Создано: 01 декабря 2011 22:27 · Поправил: Модератор · Личное сообщение · #5 Вы б это, приняли во внимание, что версия ещё типа альфа/бета и лучше сразу выкладывали, на чём не работает и где. Чтоб аргументированно разговор шёл, а не флудотоп разводить. Дык плагин асм-код давать и не должен, он должен дать листинг в промежуточном языке, но бинарь получить можно, если поглядеть на АПИ. Хотя он будет несколько страшноватый, но это из-за локальных переменных, походу. |
|
Создано: 01 декабря 2011 22:45 · Поправил: vden · Личное сообщение · #6 |
|
Создано: 01 декабря 2011 22:50 · Личное сообщение · #7 |
|
Создано: 02 декабря 2011 10:27 · Личное сообщение · #8 reversecode пишет: Ultras это было почти сразу понятно, автор занимается разработкой защит которые здесь же на форуме и ломают Авторов на самом деле несколько. Один из авторов, о котором идет речь, уже более года никаких защит не пишет, в компании той не работает и никаких отношений коммерческих с ней не поддерживает, а занимается всецело движком Ariadne. Инфа в бложике устарела и человек ее подправит. Тем не менее, конкретно этот человек не приветствует использование Ariadne для взлома нормального защищенного софта, каким бы из протов он не был бы накрыт. Деобфускации трассы в большинстве случаев достаточно для анализа, но недостаточно для снятия защиты. Поэтому даже если мы и зарелизим полноценный деобфускатор, то инструмент этот в широкий паблик выпускать не особо хочется. Особого желания пихать это в демку, как все понимают, тем более нет. Если кому-нибудь, тем не менее, нужна полноценная деобфускация CFG, то мы готовы обсуждать это, но конкретно с заказчиком. В таком случае это будет сугубо индивидуальный продукт для конкретного заказчика под его требования на базе нашего движка. По поводу багов. Они наверняка есть Все-таки речь идет о ранней бете. Поэтому, если у кого-то что-то не заработало, плз, кидайте в личку. Мы обязательно посмотрим и постараемся пофиксить. Archer пишет: Дык плагин асм-код давать и не должен, он должен дать листинг в промежуточном языке, но бинарь получить можно, если поглядеть на АПИ. Хотя он будет несколько страшноватый, но это из-за локальных переменных, походу. Ага, именно так. Да не настолько и страшноватый |
Ранг: 281.8 (наставник), 272thx Активность: 0.25↘0.01 Статус: Участник Destroyer of protectors |
Создано: 02 декабря 2011 10:51 · Личное сообщение · #9 Ariadne пишет: Тем не менее, конкретно этот человек не приветствует использование Ariadne для взлома нормального защищенного софта, каким бы из протов он не был бы накрыт. а для взлома ненормального защищенного софта? Ariadne пишет: Деобфускации трассы в большинстве случаев достаточно для анализа, но недостаточно для снятия защиты. Поэтому даже если мы и зарелизим полноценный деобфускатор, то инструмент этот в широкий паблик выпускать не особо хочется. ну прости за прямолинейность.. а кому он тада нужен?! мы написали мощный деобфускатор и теперь срубим кучу бабла, но потом подумав решили вырезать из него половину функционала, чтобы его возможностей было недостаточно для снятия защиты ибо мы заботимся о шароварах, потому-что мы сами шаровары, но мы пишем софт для реверсеров. берд. ИМХО, но так оно и выглядит. |
|
Создано: 02 декабря 2011 11:05 · Личное сообщение · #10 Да нет такой волшебной палочки чтоб раз,и снялся VM_prot или тому подобная защита и получить чистый код,темболее проект как я понял делался для анализа восновном малвари накрытую разными крипторами,ещё Крис Касперский хотел в всвоё время писать деобфускатор, неудевлюсь что к этому проекту приложил руку Крис Ariadne пишет: Деобфускации трассы в большинстве случаев достаточно для анализа, но недостаточно для снятия защиты Ну для понятия логику хватит,а остальное дело техники(прямые руки,трезвый ум и усидчивость) ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. |
|
Создано: 02 декабря 2011 12:21 · Личное сообщение · #11 Деобфускация трассы - это лишь малая часть. Грубо говоря, при таком раскладе мы получаем только одну деобфускированную орцепь, и пусть даже алго некоей функции (которую нам нужно изучить) представлен ориентированным упорядоченным деревом (т.е. к каждому листу существует только один маршрут), и общее количество листов N (хотя маршрутов в реальной задаче может быть многим больше, если граф - просто произвольный связный орграф). Тогда остаётся ещё N-1 обфускированных маршрутов, для которых даже неизвестны условия, при которых можно получить для них покрытие, т.к. обфускация. Так что как игрушка - сгодится. ClockMan пишет: Да нет такой волшебной палочки чтоб раз,и снялся VM_prot или тому подобная защита и получить чистый код Да-да. +1. ----- Stuck to the plan, always think that we would stand up, never ran. | Сообщение посчитали полезным: Vamit |
|
Создано: 02 декабря 2011 12:29 · Личное сообщение · #12 MasterSoft пишет: ну прости за прямолинейность.. а кому он тада нужен?! мы написали мощный деобфускатор и теперь срубим кучу бабла, но потом подумав решили вырезать из него половину функционала, чтобы его возможностей было недостаточно для снятия защиты ибо мы заботимся о шароварах, потому-что мы сами шаровары, но мы пишем софт для реверсеров. берд. ИМХО, но так оно и выглядит. За прямолинейность не надо просить прощения Мы считаем неразумным вываливать в демку весь функционал. Обычно так никто не делает, и мы не будем. Для задачи анализа вполне достаточно трассы. В демке деобфускация статическая. В полнофункциональной версии будет и динамическая. Если же по каким-либо причинам функционала Ariadne не хватает и нет желания, используя наше API, его самостоятельно дорисовывать, мы готовы это обсуждать и сделать продукт по желанию в рамках расширенной техподдержки. |
|
Создано: 02 декабря 2011 13:32 · Личное сообщение · #13 ARCHANGEL пишет: Деобфускация трассы - это лишь малая часть. Грубо говоря, при таком раскладе мы получаем только одну деобфускированную орцепь, и пусть даже алго некоей функции (которую нам нужно изучить) представлен ориентированным упорядоченным деревом (т.е. к каждому листу существует только один маршрут), и общее количество листов N (хотя маршрутов в реальной задаче может быть многим больше, если граф - просто произвольный связный орграф). Тогда остаётся ещё N-1 обфускированных маршрутов, для которых даже неизвестны условия, при которых можно получить для них покрытие, т.к. обфускация. Это верно, но с учетом того, что вероятность прохождения по всем путям равнозначна. На практике, как правило, известно, как при определенных входных параметрах ведет себя программа и можно вполне осознанно задавать их. Обычно интересует конкретный путь. |
|
Создано: 02 декабря 2011 13:36 · Поправил: HaRpY · Личное сообщение · #14 Практически любой нормальный код в той или иной мере содержит циклы. Развертывание такого кода в трасу (даже с небольшим количеством итераций) превращает листиг в длинющую портянку, ковыряться в которой то еще удовольствие. Кроме этого, хранение трасы будет сжирать слишком много памяти. Как я понял, в предлагаемом демо-фреймворке, оптимизация не приводит к сворачиванию циклов. Есть ли в полной версии возможность оптимизации со свертыванием повторяющихся кусков (циклов)? Может Вам в примерах на сайте показать деобфускацию на чем-нибудь поинтереснее чем из original.exe: Code:
|
|
Создано: 02 декабря 2011 14:40 · Личное сообщение · #15 |
|
Создано: 02 декабря 2011 14:49 · Личное сообщение · #16 HaRpY пишет: Есть ли в полной версии возможность оптимизации со свертыванием повторяющихся кусков (циклов)? Да, оптимизация не приводит к сворачиванию циклов на данный момент, но новые методы оптимизации будут добавляться по мере развития продукта. HaRpY пишет: Может Вам в примерах на сайте показать деобфускацию на чем-нибудь поинтереснее чем из original.exe: Может быть. Подумаем. Насчет полного покрытия. Пример с нашего сайта: 00401165 MOV EAX,5 0040116A JE SHORT testfile.00401173 0040116C MOV EAX,1 00401171 JMP SHORT testfile.00401178 00401173 MOV EAX,2 00401178 RET Прогнали этот пример через одну популярную CISC VM с выкрученными на максимум настройками морфера. После обфускации получили 82668 инструкции IR, 19955 переменных, 594 базовых блока. На 32-й итерации работы деобфускатора получили следующее: { 0x2, 0x0, 0x4b98, uninit, uninit }: var0 = %EFLAGS & 0x40; { 0x2, 0x0, 0x5a77, uninit, uninit }: if( var0 == 0x0 ) goto label { 0x8, 0xfffffffe, 0x463, uninit, uninit }; { 0x2, 0x0, 0x6e99, uninit, uninit }: var2 = 0x2; { 0x8, 0x0, 0xd3aa0, 0x1000, uninit }: label { 0x8, 0x0, 0xd3aa0, 0x1000, uninit }; { 0x2, 0x0, 0xa87b, uninit, uninit }: %eax = var2; { 0x2, 0x0, 0xa881, uninit, uninit }: var1 = dword ptr *%esp; { 0x2, 0x0, 0xa882, uninit, uninit }: %esp = %esp + 0x4; { 0x2, 0x0, 0xa883, uninit, uninit }: goto var1; { 0x8, 0xfffffffe, 0x463, uninit, uninit }: label { 0x8, 0xfffffffe, 0x463, uninit, uninit }; { 0x2, 0x0, 0xd8c0, uninit, uninit }: var2 = 0x1; { 0x2, 0x0, 0xe7b4, uninit, uninit }: goto label { 0x8, 0x0, 0xd3aa0, 0x1000, uninit }; Т.е. сделать деобфускацию полного покрытия возможно в принципе и мы готовы обсуждать эти вещи, хотя в продукте, который мы представляем, полного покрытия нет. |
|
Создано: 02 декабря 2011 14:55 · Личное сообщение · #17 |
|
Создано: 02 декабря 2011 14:58 · Личное сообщение · #18 |
|
Создано: 02 декабря 2011 15:33 · Поправил: HaRpY · Личное сообщение · #19 Ariadne пишет: Насчет полного покрытия. Пример с нашего сайта: Я имел ввиду ровно обратное: исходный пример original.exe непоказателен, чем бы он не обрабатывался. Вот, например, расчет CRC обработанный oreans' макросом MUTATE, у меня после прогона получается нечто отпугивающее. Хотя обычным статическим анализом без эмуляции(трассировки) можно получить код очень близкий к оригиналу. b81e_02.12.2011_EXELAB.rU.tgz - TestAri.zip |
|
Создано: 02 декабря 2011 17:24 · Личное сообщение · #20 |
|
Создано: 02 декабря 2011 19:39 · Поправил: Ariadne · Личное сообщение · #21 Пример работы плагина под IDA HaRpY Посмотрели файлик. Результат работы движка в аттаче. Добавим, кстати, лог от движка: AidCreateEngine... AidLoadPeFile... AidDisassemble... AirCreateFactory... AirCreateCtx... AirGenerateTrace... AirCompile... AirGetInstr...before: instructions: 113280 basic blocks: 7271 local variables: 35365 AirOptimize...after: instructions: 39 basic blocks: 1 local variables: 15 0591_02.12.2011_EXELAB.rU.tgz - after2.txt |
Ранг: 281.8 (наставник), 272thx Активность: 0.25↘0.01 Статус: Участник Destroyer of protectors |
Создано: 02 декабря 2011 19:49 · Личное сообщение · #22 |
|
Создано: 02 декабря 2011 19:49 · Поправил: reversecode · Личное сообщение · #23 по видео я так понял код с которого была снята обфускация обратно вернулся уже в ida для дальнейшего анализа, тоесть то что я показывал на картинке выше, так? демка это будет позволять? тогда подожду версии с иправлеными багами на моем примере Ariadne пишет: смотрим как раз собственно мне не горит это просто первый попавшийся из паблика для тестов но результаты позапускать исправленый плагин поглядеть в живую - хочется |
|
Создано: 02 декабря 2011 19:56 · Поправил: Ariadne · Личное сообщение · #24 |
|
Создано: 02 декабря 2011 21:01 · Личное сообщение · #25 |
|
Создано: 02 декабря 2011 21:09 · Личное сообщение · #26 |
|
Создано: 02 декабря 2011 21:44 · Личное сообщение · #27 Ariadne пишет: Посмотрели файлик. Результат работы движка в аттаче. Разница ощутима У меня вышло ~50К строк ИР кода. Это из-за ограничений демки или моя кривость при использовании? Касательно примерчика - траса покрывала 100% кода процедуры, но оптимизатор вместе с водой выплеснул и младенца. Странно, что результат вообще не свелся к банальному Code:
Хотя я ожидал увидеть что-то подобное, тому что в аттаче. Скорее всего переоптимизация произошла из-за использования значений аргументов. Каков будет результат для диапазона RVA 1050h-1A3Ah? Надеюсь наша переписка позволит общественности расширить преставление о Вашем продукте. 9028_02.12.2011_EXELAB.rU.tgz - __txtD.rar |
|
Создано: 02 декабря 2011 22:26 · Поправил: Ariadne · Личное сообщение · #28 HaRpY пишет: Разница ощутима У меня вышло ~50К строк ИР кода. Это из-за ограничений демки или моя кривость при использовании? Нет, Вы всё сделали правильно, мы просто заменили длл и запускали Ваш файл в неизменном виде, так что это ограничение демки. HaRpY пишет: Касательно примерчика - траса покрывала 100% кода процедуры, но оптимизатор вместе с водой выплеснул и младенца. Странно, что результат вообще не свелся к банальному Можно сказать, что почти к %eax = 0x7050be6d; результат и свёлся, просто ещё заполняется строка. сначала нам тоже показалось, что произошла некоторая переоптимизация, потому что нет зависимости от входных значений, но мы исследовали этот вопрос, и дело оказалось вот в чём. Если поглядеть этот код, то видно, что учитывается каждый бит входного буфера отдельно. Причём, за это отвечает вот такой код: Code:
Выходит, что от входных данных зависит исключительно CFG, но у нас трасса, потому и вышли константы. HaRpY пишет: Каков будет результат для диапазона RVA 1050h-1A3Ah? По сути, при задании такого диапазона в функцию параметры не переданы, и эмулятору они неизвестны. в таком случае эмулятор в качестве неизвестных значений берёт 0, а функция построена таким образом, что она сначала делает вычисления, потом декрементирует счётчик и проверяет его на 0. Таким образом, будет пройдено 0xffffffff итераций подсчёта, на что памяти скорее всего не хватит. |
|
Создано: 03 декабря 2011 06:03 · Личное сообщение · #29 |
|
Создано: 03 декабря 2011 11:51 · Личное сообщение · #30 PE_Kill пишет: Это выходит динамическая деобфускация, а при статической должен восстановиться исходный алгоритм? Как я понимаю, из-за принятой стратегии "работать только с трассой" и возникает проблема полноценного восстановления исходного алгоритма. Статический способ не справится с циклами и будет много лишнего, а динамический поглотит сам алгоритм, поставив во главу угла результат работы алгоритма. Применительно к приведенному выше примеру расчета CRC: будет получаться либо оооочень развернутый код, либо сам результат расчета CRC (0x7050be6d), а получить алго в том виде как это было до мутации не получится. Кроме этого, трасса не гарантирует полного покрытия исходного кода, таким образом на развилке типа триал/релиз в оптимизированном варианте мы получим только лишь одну часть алгоритма. В общем, данный фреймворк (по текущему состоянию) следует позиционировать как мощнейшее средство оптимизации трассы. Но, как я думаю, большинству интересно именно приведение обфусцированного кода к исходному виду, т.е. нужно видеть код таким, каким он был до обработки обфускатором. Так что позволю себе дать совет авторам: если у Вас есть желание и возможность сделать кроме оптимизации трассы еще и оптимизацию CFG то делайте. Потом уже решайте оставить у себя или продавать. |
|
Создано: 03 декабря 2011 12:06 · Личное сообщение · #31 HaRpY "В AIR Wave Deobfuscation Technology используется два метода деобфускации – статический и динамический. Статический метод более приближен к классическим подходам из теории компиляторов. Динамический метод основан на эмуляции IR инструкций и дает более мощные результаты там, где не справляется статический." Отсюда я сделал вывод, что статическая деобфускация как раз и оптимизирует CFG, но: "Заметим сразу, что речь идет о деобфускации трассы. Ни одна из продаваемых версий не будет содержать полноценный деобфускатор, чтобы предотвратить использование технологий Ariadne в нелегитимных целях для снятия программных защит." Т.е. она реализована, она есть, но увидеть ее не получится, ибо в паблик релизах работа только с трассой. Применение оптимизации трассы (не полное покрытие кода), я, даже подумав немного, придумать не могу. ----- Yann Tiersen best and do not fuck |
<< . 1 . 2 . 3 . >> |
eXeL@B —› Софт, инструменты —› Ariadne Framework & Deobfuscator |