Сейчас на форуме: (+5 невидимых) |
eXeL@B —› Протекторы —› Статическая трассировка кода |
<< . 1 . 2 . 3 . 4 . 5 . 6 . |
Посл.ответ | Сообщение |
|
Создано: 11 декабря 2017 18:39 · Поправил: Boostyq · Личное сообщение · #1 Всем привет, Изучаю x86 драйвер, он защищен с помощью vmp Случай достаточно простой, только некоторые функции мутированы (обфусцированы?), даже нет внешней упаковки Для того чтобы посмотреть обфускацию целиком, нужна трасса от и до Дебажить его у меня нет возможности, да и вообще хочу попробовать сделать это статически Возможно идея глупая, но что если написать упрощенный процессор с обработкой нужных инструкций (операции стека, прыжки, вызовы), который бы "выполнял" код до тех пор пока не встретиться выход из функции Правда не ясно что делать c вызовами API, stdcall мы же очищаем стек, но вот с другими соглашениями? Дело даже не в проте, а вообще в целом Я пыталась делать парсер конкретных команд под конкретный прот, но дело в том, что это не возможно реализовать, ибо число нелогичных приемов может быть очень большое, поэтому нужно спуститься на самый нижний уровень, для того чтобы выполнять код как сам процессор это делает Возможно кто-то даст дельный совет, может кто-то уже делал подобное? Так же я пыталась найти псевдо-код, как процессор выполняет команды, т.к. вмпрот любит использовать редкие команды, может у кого то есть линки? Спасибо ----- В облачке многоточия |
|
Создано: 24 декабря 2017 22:20 · Поправил: difexacaw · Личное сообщение · #2 Boostyq Нашёл через гугл Именно из за этой инфы(in/out-f/r) я когдато и использовал beadisasm. Сейчас это умеет ксед. Добавлено спустя 16 минут Покопался в архивах и нашёл пример регистровой свёртки. Там даже крины есть cdd3_24.12.2017_EXELAB.rU.tgz - Int29.rar ----- vx |
|
Создано: 24 декабря 2017 22:36 · Личное сообщение · #3 |
|
Создано: 25 декабря 2017 09:25 · Личное сообщение · #4 |
|
Создано: 25 декабря 2017 09:47 · Личное сообщение · #5 VodoleY пишет: либо по difexacaw делать универсал Смешно, да нуб он который несколько лет здесь в каждой второй теме писал о графах, а как оказалось он в них разбирается чуть лучше чем никак и с vmprotect аналогично, был уже эпичный фейл с фимкой. VodoleY пишет: т.е. надо делать свой ллвм.. т.е полноценный компилер Зачем, что во что будем компилировать, тем более полноценно? LLVM не считаю каким то особо сложным проектом в котором невозможно разобраться (по нему даже книга есть), chrome сложнее, а gcc хуже по состоянию кода и количеству легаси. VodoleY пишет: тот же инт в соразрабы полез.. почитал.. отвалился Это может говорить лишь о двух вещах, либо о качестве проекта, либо о знаниях теории пытавшегося, поэтому и начинать нужно с теории, а не чьих то проектов, иначе даже лучшей проект ляжет мертвым кодом. |
|
Создано: 25 декабря 2017 12:29 · Личное сообщение · #6 shellstorm пишет: Это может говорить лишь о двух вещах, либо о качестве проекта, либо о знаниях теории пытавшегося, поэтому и начинать нужно с теории, а не чьих то проектов, иначе даже лучшей проект ляжет мертвым кодом. Вы абсолютно правы, все говорят, чтобы я попробовала, но с чего они вообще взяли, что я достойна >.< Насчет теории конечно верно, но так же нужно вручную изучить вм, а уже потом куда-то прыгать Вот например, обфускацию вмп я теперь понимаю лучше, пытаюсь написать автоматическое решение, а уже после можно думать о более верных вариантах с llvm или другой оптимизацией ----- В облачке многоточия | Сообщение посчитали полезным: shellstorm |
|
Создано: 25 декабря 2017 12:49 · Личное сообщение · #7 |
|
Создано: 25 декабря 2017 13:31 · Поправил: Bronco · Личное сообщение · #8 shellstorm пишет: о качестве проекта Проект имеет выхлоп, и весьма убедительный. По разным слухам, на текущий момент, не считая авер контор (?), имеются ещё четыре(!) независимых источника с положительным результатом. Все в привате, в паблик обсуждениях участия практически не принимают. Итого , за более чем 12 лет, всего пять более менее за конченых проектов, что говорит о сложности механизма обсуждаемой защиты. В том что на поверхности, прежде всего х86, не полный анализ механизма, и как правило путаница в терминологии. За 6 страниц топа, не считая постов Вамита, имхо, всего 2 полезных мысли: 1. вместо поиска патернов.. контролите состояние виртуальной машины 2. следующим этапом выделяют логические блоки, с них начинается оптимизация и доказательства лемм Собственно так далеко с оптимизацией промежуточного кода не заходил, решал в основном разные прикладные задачи, что позволило более менее иметь представление об этому чудовище. Отсюда картина не полная, и остались вопросы: 1.Часто звучал термин пикод, что подразумевает наличие интерпретатора. Такого механизма не обнаружил, и вывод, что это стековая вм, правильный? 2.Сколько вм_регистров в реализации х64? ----- Чтобы юзер в нэте не делал,его всё равно жалко.. |
|
Создано: 25 декабря 2017 13:42 · Поправил: shellstorm · Личное сообщение · #9 Bronco пишет: Проект имеет выхлоп, и весьма убедительный. Я и не утверждаю, что автор мудак или школьник, но если кто то выкатит на паблик серьезный разбор протектора то тулы начнут расти аки грибы. Рядом топ с декомпилятором делфи, сама программа простая и ее напишет почти любой студент, самая сложная часть это изыскания, за что респект крипто. Bronco пишет: За 6 страниц топа, не считая постов Вамита, имхо, всего 2 полезных мысли Полезность штука субъективная и думаю сами понимание, что разбор vmprotect это чистая коммерция, людей которых могут не так и мало, а вот готовых выкатить что то на паблик единицы. 1. Стековый\регистровый конечный автомат. в BH вроде бы за 2015 год был частичный разбор прота, опкоды, архитектура и вот это все. 2. Хз, я кроме скромно накрытого анпакми ничего не видел под x64. Нужен либо сам прот, либо куча анпакми с вариациями опций. | Сообщение посчитали полезным: Bronco |
|
Создано: 25 декабря 2017 13:47 · Личное сообщение · #10 1.Часто звучал термин пикод, что подразумевает наличие интерпретатора. Такого механизма не обнаружил, и вывод, что это стековая вм, правильный? Пикод есть в любом вмпроте, но это не значит что должен быть отдельный интерпретатор. До 3ей версии он был (цикл вм и таблица хендлеров), начиная с 3ей версии он стал распределенным (пикод интерпретируется в вм на лету) - цикл вм и таблица хендлеров отсутствует, но тела всех обработчиков (примитивов вм) остались. Да, здесь стековая вм. 2.Сколько вм_регистров в реализации х64? х64 не изучал, а для х32 - 16 регистров вм. ----- Everything is relative... | Сообщение посчитали полезным: Bronco |
|
Создано: 25 декабря 2017 14:02 · Личное сообщение · #11 Другой разбор, куда скромнее, но ТС может будет интересно. bd25_25.12.2017_EXELAB.rU.tgz - prez-vmprotect.zip | Сообщение посчитали полезным: Boostyq, plutos |
|
Создано: 25 декабря 2017 14:02 · Поправил: dosprog · Личное сообщение · #12 |
|
Создано: 25 декабря 2017 14:11 · Личное сообщение · #13 |
|
Создано: 25 декабря 2017 14:13 · Личное сообщение · #14 SegFault пишет: А есть у когонибудь древние vmp? Хочу покопать и крелку показать, что он нуб и овощь на примере солверов и прочего сферического говна в вакууме этому пациенту ничего нельзя доказать, самого прота у меня к сожалению нет, а анпакми можно взять здесь: https://github.com/0xbadc0de1/VmP_DBG |
|
Создано: 25 декабря 2017 15:02 · Личное сообщение · #15 SegFault пишет: А есть у когонибудь древние vmp? Достаточно древние ? v0.71 _http://rgho.st/7S4zgVrJL v0.73 _http://rgho.st/6l6cLXY5h | Сообщение посчитали полезным: ARCHANGEL |
|
Создано: 28 декабря 2017 01:00 · Личное сообщение · #16 dosprog пишет: Болгарин. На отладку, по слухам, ушло более года. А поляки ничем никого не удивляли, почему-то. у меня ушло 3 месяца Добавлено спустя 4 минуты причем если вы эту тварь смотрели.. там по очереди надо 6 прерываний в определенном порядки отключать.. вобщем гадость. еще та.. но занятная до ушаса.. я кстати до сих пор генератор псевдо случайных.. от него тоскаю... он для морфа использовался ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 28 декабря 2017 15:44 · Поправил: dosprog · Личное сообщение · #17 [offtop] Нет, не ковырял его как следует. Всё ограничилось только тем, что в начальных секторах диска поправил расширения COM и EXE, убрал крипчение новых секторов и поудалял попорченные исполняемые файлы. Какое-то время оно так и работало, компьютер-то был чужой. А потом всё переформатировал заново и всех делов, - когда все данные там зарезервировали. Образ остался с тех пор - лежит, думал полностью его отдизасмить, в принципе, там на пару-тройку тысяч строк текста получилось бы - но руки так и не дошли. Да и необходимости такой не было - вещь довольно занудная. Так тот архив и лежит до сих пор без дела: .. двадцать лет, псд.. [/offtop] |
|
Создано: 19 января 2019 01:28 · Личное сообщение · #18 SegFault пишет: Еще есть Metasm, с помощью него недавно неплохая статья вышла по деобфускации VM в ci.dll (виндовая security либа ). Никто не пробовал установить эту штуку? У меня почему-то при команде hg clone https://www.cr0.org/progs/metasm/hg/ metasm Вылетает ошибка HTTP error 404 Not found, The requested URL /hg/ was not found on this server. хотя сайт вроде бы на месте, но что-то да не так. Кто-нибудь может попробовать и сказать что получилось? Спасибо! ----- Give me a HANDLE and I will move the Earth. |
|
Создано: 19 января 2019 01:52 · Поправил: ntldr · Личное сообщение · #19 Как отключить функции ci.dll, либо подменить их на свои. Простой пример универсального кода, работает от Vista SP0 до Последней 10ки. Публикую чтобы поржать как легко обходится вся эта безопасность через неясность, которой увлекается Microsoft. Code:
Функция search_ci_callbacks_in_kernel запущенная в kernel mode распечатывает список адресов CI калбеков и указателей на них в секции данных ядра. Сделав *((PVOID*)ptr) = my_function можно заменить функции безопасности на свои, винда хавает и не хрюкает. Количество, очерёдность, названия и назначения CI каллбеков в разных версиях винды отличаются. Дизассемблер вам в руки, смотрите начиная с экспортируемой функции CiInitialize, в которой идёт заполнение структуры каллбеков и разберётесь что где как. PS: для большей стабильности можно добавить проверку выравнивания адресов CI функций на 16, но оно и так отработает без ложняков. ----- PGP key | Сообщение посчитали полезным: plutos, dosprog, Orlyonok, mak, rthax, dezmand07 |
|
Создано: 19 января 2019 15:44 · Личное сообщение · #20 |
|
Создано: 19 января 2019 22:33 · Личное сообщение · #21 plutos, какую хорошую тему вы затронули . Буквально недавно подумал о том, что нужно бы попробовать поработать с подобными программами. А тут оказывается все не так просто. Для обфусцированного кода, говорят, хорошая вещь. Даже Ида с ней не сравнится, потому-как не "заточена" под это (разве, что плугины какие-нибудь есть). Если не трудно, напишите позже удалось вам запустить Metasm и какие первые впечатления? P.S. Есть еще подобные программы и, вроде-как, не хуже Metasm, а в чем-то может даже и лучше - это Miasm и VxStripper. Может кто-нибудь работал с этими программами? Интересно было бы узнать мнение - стоит тратить время на эти программы или нет? |
|
Создано: 20 января 2019 04:07 · Поправил: plutos · Личное сообщение · #22 Diabolic пишет: На гитхаб ходили? Тут дело не в гитхаве. Metasm у меня был установлен и работал как часы на windows 7. Потом была смена user account'a а вместе с ней все enviromental variables были потеряны. Вот я и решил обновить Ruby, а вместе с ним и Metasm. (hg pull -u) или на худой конец просто переустановить с помощью Mercurial hg clone. Но на гитхабе нет gh repository для miasma. Поэтому я и хочу узнать, что случилось с https://www.cr0.org/progs/metasm/hg/, в этом мой вопрос. dma пишет: Если не трудно, напишите позже удалось вам запустить Metasm и какие первые впечатления?P.S. Есть еще подобные программы и, вроде-как, не хуже Metasm, а в чем-то может даже и лучше - это Miasm и VxStripper. Может кто-нибудь работал с этими программами? Интересно было бы узнать мнение - стоит тратить время на эти программы или нет? Удалось, и какое-то время он у меня исправно работал, а потом перестал. (см. выше) Впечатления хорошие. С установкой немного пришлось повозиться, но потом все работало. Нужно конечно читать мануалы, но они есть и толковые. Чтобы убедиться что все хорошо, пробуем ruby -rmetasm -e 'p metasm::VERSION'. Если видим версию , значит успех! Metasm описан в книге "Practical Reverse Engineering" Chapter 5 ■ Obfuscation (на форуме была ссылка), там есть даже тесты и упражнения. Great metasm tutorial: VxStripper - не знаю, не пробовал, а Miasm легко устанавливается на Ubuntu, Kali, FreeBSD. Время (если оно есть, конечно)тратить стоит, можно много нового узнать. Но это конечно на любителя. Вроде меня. Update: На всякий случай еще раз скопировал select metasm.rb and metasm folder; copy ; goto D:\Ruby24-x64\lib\ruby\2.4.0 ; paste (понятно, что D:\Ruby24-x64\lib\ruby\2.4.0 нужно заменить with the directory where you installed ruby) (win) и все заработало! Так что вопрос мой отпал как-то сам собою... ----- Give me a HANDLE and I will move the Earth. | Сообщение посчитали полезным: dma |
|
Создано: 20 января 2019 05:19 · Личное сообщение · #23 plutos, спасибо за относительно подробный ответ и внимание. Когда писал вам вопрос аж руки тряслись от страха . Думал, что или проигнорируют, либо пошлют в гугл или посоветуют искать себя в чем-нибудь другом. Привык уже к стандартным ответам одного о-о-очень известного и авторитетного человека на нашем форуме, который не любит когда его ник в одном посте упоминают больше одного раза . |
|
Создано: 20 января 2019 06:30 · Личное сообщение · #24 |
|
Создано: 20 января 2019 07:10 · Личное сообщение · #25 dma пишет: Когда писал вам вопрос аж руки тряслись от страха Да ну, это уже лишнее! Мы что, папуасы какие-то? Подавляющее большинство людей на этом форуме очень знающие, толковые и отзывчивые люди, всегда готовые помочь. Если нормальный вопрос, показывающий, что человек сам думает и ищет, то, как правило, и нормальный ответ. ----- Give me a HANDLE and I will move the Earth. | Сообщение посчитали полезным: sefkrd, DrVB_5_6 |
|
Создано: 21 января 2019 20:43 · Личное сообщение · #26 ntldr пишет: Как отключить функции ci.dll, либо подменить их на свои Вот только это проверяется патчгардом в rs5 а может и ниже. Если ты тестил то просто не дождался подарка алсо в 10 там есть колбек который ставится только на хбоксе, вполне возможно он в другом модуле. Ну хотя мало кто захочет похакать хбокс. |
|
Создано: 21 января 2019 22:58 · Личное сообщение · #27 Boostyq пишет: Так же я пыталась найти псевдо-код, как процессор выполняет команды |
|
Создано: 21 января 2019 23:43 · Поправил: Boostyq · Личное сообщение · #28 |
<< . 1 . 2 . 3 . 4 . 5 . 6 . |
eXeL@B —› Протекторы —› Статическая трассировка кода |