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

Сейчас на форуме: Smitis (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Программирование —› Visor оптимизация.
<< . 1 . 2 .
Посл.ответ Сообщение


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

Создано: 07 мая 2018 19:19 · Поправил: difexacaw New!
Цитата · Личное сообщение · #1

Здрасте.

Вернулся к задаче защиты(OP). Поработав неделю, возник тупик. Тоесть нужен свежий взгляд.

Задача сложная, не из прикладного прог-я. Даже я мозг хорошо на ней поломал, решения не видно, тёмный лес

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

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

В моём случае работа визора сводится к выделению потоков данных(DFG), а точнее это связывание событий по времени(src-dst для указателей в виде маркеров в памяти), без промежуточных деталей(DFG). Те исполнение кода приводит к динамик выделению dfg и урезанию её, что сводится лишь к причинно-следственным связям(PFG), через пересылки данных маркируется указатель.

Задача следующая.

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

Все логические цепочки вроде как приводят к невозможности решения(главное в нём - профайл - определение FG должно быть быстрее прямого исполнения).

У меня походу полная засада с данной задачей. Тем более что её даже нельзя чётко сформулировать.




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

Создано: 19 июня 2018 03:22 New!
Цитата · Личное сообщение · #2

shellstorm

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

Задача не решена, по причине профайла.


<< . 1 . 2 .
 eXeL@B —› Программирование —› Visor оптимизация.
Эта тема закрыта. Ответы больше не принимаются.

Видеокурс ВЗЛОМ