Сейчас на форуме: jinoweb (+6 невидимых)

 [email protected] —› Программирование —› Visor оптимизация.
<< . 1 . 2 .
Посл.ответ Сообщение


Ранг: 338.5 (мудрец), 349thx
Активность: 2.112.42
Статус: Участник

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

Здрасте.

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

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

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

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

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

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

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

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

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

-----
vx





Ранг: 338.5 (мудрец), 349thx
Активность: 2.112.42
Статус: Участник

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

shellstorm

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

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

-----
vx



<< . 1 . 2 .
 [email protected] —› Программирование —› Visor оптимизация.
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати