eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: panlik, mkdev
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Протекторы —› Статическая трассировка кода
<< . 1 . 2 . 3 . 4 . 5 . 6 . >>
Посл.ответ Сообщение

Ранг: 68.6 (постоянный)
Статус: Участник

Создано: 11 декабря 2017 18:39 · Поправил: Boostyq New!
Цитата · Личное сообщение · #1

Всем привет,
Изучаю x86 драйвер, он защищен с помощью vmp
Случай достаточно простой, только некоторые функции мутированы (обфусцированы?), даже нет внешней упаковки
Для того чтобы посмотреть обфускацию целиком, нужна трасса от и до
Дебажить его у меня нет возможности, да и вообще хочу попробовать сделать это статически
Возможно идея глупая, но что если написать упрощенный процессор с обработкой нужных инструкций (операции стека, прыжки, вызовы), который бы "выполнял" код до тех пор пока не встретиться выход из функции
Правда не ясно что делать c вызовами API, stdcall мы же очищаем стек, но вот с другими соглашениями?
Дело даже не в проте, а вообще в целом
Я пыталась делать парсер конкретных команд под конкретный прот, но дело в том, что это не возможно реализовать, ибо число нелогичных приемов может быть очень большое, поэтому нужно спуститься на самый нижний уровень, для того чтобы выполнять код как сам процессор это делает
Возможно кто-то даст дельный совет, может кто-то уже делал подобное?
Так же я пыталась найти псевдо-код, как процессор выполняет команды, т.к. вмпрот любит использовать редкие команды, может у кого то есть линки?
Спасибо

Ранг: 0.0 (гость)
Статус: Участник

Создано: 23 декабря 2017 02:24 New!
Цитата · Личное сообщение · #2

Boostyq пишет: скрипт для конвертации трассы под компилятор


Недавно выкатили retdec, там есть конвертер asm2ir


Ранг: 316.1 (мудрец)
Статус: Участник

Создано: 23 декабря 2017 10:30 · Поправил: difexacaw New!
Цитата · Личное сообщение · #3

shellstorm

> Получить трасу это не решение

Конечно не решение, это первый источник инфы для дальнейшей работы с ней(трассой). Вот выше например тс сворачивал код на основе утери данных в dfg - не использования контекста, источником инфы являлся декодер эмулятора. Так элементарно чистится код от idle инструкций. В целом же на счёт такой чистки - ничего годного не получится. Свёртка вм кода то же самое что свёртка метаморф кода. Из за невозможности это сделать это и не используется. Изменение кода таким путём приводит к его расширению в каждом поколении, обратную операцию выполнить нельзя. Для этого нужно абстрагироваться до логики работы апп, а это уже задача из области фантастики.

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

На данном ресурсе всё крутится вокруг vmp, иных задач нет, кроме комерса. На те вопросы что я поднимал ответов небыло, впрочем я их и не ждал. Вы вот например ничего годного там как и тут не посоветовали.

> видите ли не оценили моторы непризнанного гения. Но здесь не wasm или подобный ему лепрозорий

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

Добавлено спустя 11 минут
SegFault

> полоумный хакер винХП почемуто считает что всё ядро ОС должно быть загружено в солвер, и угар в том, что хеккер считает, что всё упадет в бсод внутри солвера

Почему вы оскорбляете и причём тут xp. У вас в сурках имеется быть может 10-ка - нет, так что не нужно писать бред мой юный друг.

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

Ранг: 409.2 (мудрец)
Статус: Участник

Создано: 23 декабря 2017 10:47 · Поправил: dosprog New!
Цитата · Личное сообщение · #4

А ты вспомни, как сам себя вёл тут поначалу
- чуть менее похабно, чем сейчас чувак с пенопластом рубероидом себя ведёт.
Так что всё меняется. По мере течения времени.



Ранг: 316.1 (мудрец)
Статус: Участник

Создано: 23 декабря 2017 10:52 New!
Цитата · Личное сообщение · #5

dosprog

Я тогда много веществ всяких юзал, что влияло на поведение и прочие процессы в кгс.

Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 23 декабря 2017 11:10 New!
Цитата · Личное сообщение · #6

блин опять флуд и холивар.. Boostyq годных решений на самом деле не много.. а как заметил ВАМит... без полноценного компиллера задача в чистом виде не решается.. я года 4 назад активно вникал в логику свипера.. если вы хотите в какомто виде решить эту задачу то стековая оптимизация вот через него и решается.. хотяб как то..

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


Ранг: 68.6 (постоянный)
Статус: Участник

Создано: 23 декабря 2017 13:05 · Поправил: Boostyq New!
Цитата · Личное сообщение · #7

VodoleY пишет:
блин опять флуд и холивар.. Boostyq годных решений на самом деле не много.. а как заметил ВАМит... без полноценного компиллера задача в чистом виде не решается.. я года 4 назад активно вникал в логику свипера.. если вы хотите в какомто виде решить эту задачу то стековая оптимизация вот через него и решается.. хотяб как то..

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

Трейсер имеет информацию, что там всегда будет 0, однако тут нужно описывать более умную логику
Вообще я уже поняла, что функцию которую ковыряю это расчет SHA256
Все таки доделаю трейсер, чтобы можно было быстро компилить код под msvs
И конечно, писать обфускацию всегда легче, чем деобфускатор, пойду писать свой прот (нет)

Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 23 декабря 2017 13:18 · Поправил: VodoleY New!
Цитата · Личное сообщение · #8

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

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


Ранг: 68.6 (постоянный)
Статус: Участник

Создано: 23 декабря 2017 14:04 New!
Цитата · Личное сообщение · #9

VodoleY пишет:
Boostyq это не имеет значение.. я вас еще раз прошу почитать тиорию свипера.. там как бы гипервизор.. который управляем... и вы можете писать свои правила.. правда.. для этого надо выпросить у вамита сорцы.. но это уже не велосипед
ЗЫ. т.е вы вместо поиска патернов.. контролите состояние виртуальной машины. под которой работает прога.. отсекая переменные.. флудовые ветки.. и левые операции..

Все ясно, буду двигаться в этом направлении, спасибо

Ранг: 0.0 (гость)
Статус: Участник

Создано: 23 декабря 2017 15:43 · Поправил: shellstorm New!
Цитата · Личное сообщение · #10

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

Что и требовалось доказать, какая ось в солвере чудик, не осилил архитектуру на пикче и продолжаешь тупить.

difexacaw пишет: Конечно не решение, это первый источник инфы для дальнейшей работы с ней(трассой)

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


Ранг: 1013.7 (!!!!)
Статус: Участник

Создано: 23 декабря 2017 15:48 New!
Цитата · Личное сообщение · #11

Boostyq а можно уменьшить избыточность цитирования ?

Ранг: 68.6 (постоянный)
Статус: Участник

Создано: 23 декабря 2017 16:10 New!
Цитата · Личное сообщение · #12

reversecode пишет:
?

Конечно

Ранг: 0.0 (гость)
Статус: Участник

Создано: 23 декабря 2017 20:03 New!
Цитата · Личное сообщение · #13

VodoleY пишет: это не имеет значение.. я вас еще раз прошу почитать тиорию свипера

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


Ранг: 316.1 (мудрец)
Статус: Участник

Создано: 23 декабря 2017 22:31 New!
Цитата · Личное сообщение · #14

shellstorm

Какие выделения блоков для морфера/вм ?

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

Ранг: 0.0 (гость)
Статус: Участник

Создано: 23 декабря 2017 23:04 New!
Цитата · Личное сообщение · #15

difexacaw пишет: Пруф в студию на рабочие примеры по солверам и прочей фигне, которую вы написали.

Цена вопроса? В качестве бесплатного кролика можешь загуглить ollvm, данный обфускатор часто приводят в лекциях и можешь сам поиграться с готовыми скриптами оптимизирующие граф, только сомневаюсь, что у тебя хватит умственных способностей запустить даже готовое.
Вот неплохая лекция http://arizona.openrepository.com/arizona/bitstream/10150/613135/1/azu_etd_14572_sip1_m.pdf
изучи хоть основы, а не придумывай очередные неологизмы с фантастикой.

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



Ранг: 269.3 (наставник)
Статус: Участник
Advisor

Создано: 24 декабря 2017 00:40 New!
Цитата · Личное сообщение · #16

shellstorm пишет:
Вот неплохая лекция

Downloaded | 23-Dec-2017 21:26:31 - совпадение или синхронизация?
---------
заведение серьёзное, успешно предсказали итоги выборов в пендостане


Ранг: 316.1 (мудрец)
Статус: Участник

Создано: 24 декабря 2017 00:43 New!
Цитата · Личное сообщение · #17

shellstorm

Я спросил рабочий пример. И не вам оценивать мои умственные способности. Какой есчо обфускатор. Давайте решение по солверам и визорам, второй раз спрашиваю. И не просто так, а что бы на что то опираться, для дальнейшего обсуждения. Вы слишком много выдали абстрактной матчасти, соответственно нужна имплементация.

Если же вы не можете привести рабочий пример, тогда это не более чем спам получается.

Ранг: 0.0 (гость)
Статус: Участник

Создано: 24 декабря 2017 01:01 New!
Цитата · Личное сообщение · #18

Bronco пишет: заведение серьёзное, успешно предсказали итоги выборов в пендостане

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

difexacaw пишет: Давайте решение по солверам и визорам

Требовать у мамки будешь и оценивать умственные способности именно мне, а не тебе, товарищ пациент, выше уже давал ссылку, если бы удосужился внимательно просмотреть, там полный разбор ollvm., таргет, "мотор", скрипты и вот это все. Относительно спама, один товарищ с бобруйска давеча писал, что vmprotect это ерунда, захватить визором (который мотор), выделить код и почистить таргет, вот где это все?


Ранг: 316.1 (мудрец)
Статус: Участник

Создано: 24 декабря 2017 01:38 · Поправил: difexacaw New!
Цитата · Личное сообщение · #19

shellstorm

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

Ранг: 0.0 (гость)
Статус: Участник

Создано: 24 декабря 2017 01:44 New!
Цитата · Личное сообщение · #20

difexacaw пишет: Тоесть получается полный ноль как реализация и одни ваши понты

Мой болезный читатель, уже писал о DBT, яркий пример технологии это vmware, робит же или нет? Конечно тебя никто не воспринимает серьезно, сумрачный властелин черных ящиков. Мне прям любопытно, а сможешь описать хоть примерно работу vmprotect?


Ранг: 1120.2 (!!!!)
Статус: Участник

Создано: 24 декабря 2017 02:38 · Поправил: Gideon Vi New!
Цитата · Личное сообщение · #21

difexacaw пишет:
Я спросил рабочий пример.


с тебя рабочих, осмысленных, примеров спрашивают с момента появления на форуме. Но нет, там станки не чиненые стоят.

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


Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 24 декабря 2017 14:59 · Поправил: VodoleY New!
Цитата · Личное сообщение · #22

shellstorm пишет:
випера, рили? может стоит начать с теории графов, например с доминаторов и графа зависимостей. тот же cfg нужно строить и для стека.

мое мнение.. свипер рили.. если шатать стек.. + флаги.. надо чекать состояние виртуальной машины.. 2 варианта.. либо по difexacaw делать универсал.. но это через чур эмбициозное решение.. или вдаваться в часности.. т.е. надо делать свой ллвм.. т.е полноценный компилер.. свипер.. очень хорошее начало.. я не вижу на форуме людей, которые моглиб круче вамита разрабу сделать.. вот лучшем вамиту помогли.. его 2 года пинали.. говорили что говно.. до тех пор пока не прозрели.. тот же инт в соразрабы полез.. почитал.. отвалился
ЗЫЫ но мы вышли за рамки топика? не заметили?

Добавлено спустя 1 минуту
лвлм.. кстати в жопу.. он вышел за рамки понимания.. хоть и опен сорц..

Добавлено спустя 2 минуты
Gideon Vi пишет:
с тебя рабочих, осмысленных, примеров спрашивают с момента появления на форуме. Но нет, там станки не чиненые стоят.

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

Добавлено спустя 4 минуты
difexacaw пишет:
Тоесть получается полный ноль как реализация и одни ваши понты".

ты не ноль.. ты зациклился.. смотри шире

Добавлено спустя 9 минут
Boostyq
можно еще одно отсупление.. я както в 93ем.. распечатал 10 метров на матричном.. исходники ванхалфа.. которого сука.. 4 месяца у себя искоринял.. дискеты. винт все нахер пошифровано.. кстати.. создатель поляк.. это между прочим.. один из первых метополиморфов.. так я к чему.. я на нем асму учился... очень кстати познавательно.. дык вот о теме топика.. вы либо изучаете построение морфа(тогда это было проще но логика от этого не меняется) либо пытаетесь построить универсал.. а это .. толко лишь ваш дар решит.. сможете или нет.. пока ниче лучше свипера нету


Ранг: 316.1 (мудрец)
Статус: Участник

Создано: 24 декабря 2017 15:28 New!
Цитата · Личное сообщение · #23

VodoleY

> ты не ноль.. ты зациклился.. смотри шире

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

В общем тема очень странная. Мне хотелось бы увидеть конкретное решение по тем же солверам. А выслушивать мнения - интерес быстро пропадает. И почему тс пишет от женского пола, я не верю. Это скорее типичный хитры трюк, получить снисходительное отношение и всё такое. Женский разум не может такие задачи решать в принципе. То что тс собрал и показал, женщине сделать просто невозможно.

Ранг: 68.6 (постоянный)
Статус: Участник

Создано: 24 декабря 2017 15:38 New!
Цитата · Личное сообщение · #24

VodoleY пишет:
я на нем асму учился... очень кстати познавательно.. дык вот о теме топика.. вы либо изучаете построение морфа(тогда это было проще но логика от этого не меняется) либо пытаетесь построить универсал.. а это .. толко лишь ваш дар решит.. сможете или нет.. пока ниче лучше свипера нету

Действительно полезно, я тоже подтягиваю ассемблер, изучая обфускацию, пока составляла разные таблицы для сворачивания несколько раз прошерстила все команды, теперь знаю гораздо лучше
Я уже что только и не пробовала, и трассу через x64dbg снимала, опять же она идет лишь по одному варианту из незнаю-сколько возможных, мой трейсер вообще неверно делает, в том плане, что он проходит ветку лишь раз, а например в 3 версии я заметила, что одна и та же ветка при разном входе может выходить на разные выходы (я имею ввиду jmp edx например, а не условные прыжки), т.е. здесь трейсер не может угадать все возможные варианты, опять же не работает...

Ранг: 44.8 (посетитель)
Статус: Участник

Создано: 24 декабря 2017 15:39 New!
Цитата · Личное сообщение · #25

difexacaw
рутковская походу тоже переодетый мужик, иначе как она свою ОС запилила, слезай с грибов друк


Ранг: 316.1 (мудрец)
Статус: Участник

Создано: 24 декабря 2017 15:52 New!
Цитата · Личное сообщение · #26

SegFault

Рутковскую никто бы и не знал, если бы не её хороший друг.

Добавлено спустя 4 минуты
Boostyq

> уже что только и не пробовала

Я ведь говорил что трассировщик накапливает EP и формирует cfg/dfg. Далее это должен обработать конструктор, он покроет весь вызываемый код. Только потом можно выполнить декомпиляцию/деморф/свёртку. Без данного компонента у вас ничего не получится.

Ранг: 68.6 (постоянный)
Статус: Участник

Создано: 24 декабря 2017 16:04 New!
Цитата · Личное сообщение · #27

difexacaw пишет:
Женский разум не может такие задачи решать в принципе

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

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


Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 24 декабря 2017 16:12 · Поправил: VodoleY New!
Цитата · Личное сообщение · #28

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

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


Ранг: 68.6 (постоянный)
Статус: Участник

Создано: 24 декабря 2017 21:58 · Поправил: Boostyq New!
Цитата · Личное сообщение · #29

Кстати, задам вопрос между делом:
В документации часто вижу, что некоторые флаги становятся undefined
Например инструкция "bt" - "The CF flag contains the value of the selected bit. The OF, SF, ZF, AF, and PF flags are undefined."
Означает ли это, что флаги OF,SF,ZF,AF,PF будут выключены?
В каждом эмуляторе по разному, где-то записывают ноль, где-то не трогают, но мне нужно знать наверняка, чтобы использовать это при анализе "полезности" инструкции
Имеется ввиду, могу ли я рассчитывать, что такая инструкция перекроет все флаги, если допустим стоит перед cmp или test?


Ранг: 316.1 (мудрец)
Статус: Участник

Создано: 24 декабря 2017 22:08 New!
Цитата · Личное сообщение · #30

Boostyq

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

Это две стандартные функции, которые ищут корреляции в dfg - не использование контекста после его изменения.

Есть годная таблица, где показаны dF/dR для всех инструкций, но я не могу найти линк пока.

Ранг: 68.6 (постоянный)
Статус: Участник

Создано: 24 декабря 2017 22:14 · Поправил: Boostyq New!
Цитата · Личное сообщение · #31

difexacaw пишет:
Это вполне ожидаемый вопрос. Обычно флажки не меняются согласно матчасти. Понятно что вы делаете, удалить мусорные инструкции можно и по регистрам, не только флагам.

Именно это и делаю, составляю уже третий список, первый был только по флагам, второй по регистрам, но я многое не учла, и сейчас делаю по всему x86 cpu
На самом деле там есть еще два пункта, которые тоже нужно учитывать
Только если все 4 условия совпадают можно удалить инструкцию
Все в таком плане...
Code:
  1. btc,btr,bts:
  2.   fwd |= CF; //не включает undefined AF|OF|SF|ZF|PF
  3.   if O1 is REG: rrd |= O1; rwd |= O1;
  4.   if O1 is MEM: oth |= MRD|MWD;
  5.   if O2 is REG: rrd |= O2;
<< . 1 . 2 . 3 . 4 . 5 . 6 . >>
 eXeL@B —› Протекторы —› Статическая трассировка кода

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS