diff --git a/Config.md b/Config.md index a9bc5af..06e8104 100644 --- a/Config.md +++ b/Config.md @@ -57,7 +57,23 @@ ## Конфигурация перехватов доступа к памяти: -WIP +Перехваты разделяются по двум критериям - по способу обработки и по типу перехваченной операции. +По способу обработки - можно указать подмену адреса на адрес перехваченного устройства, прямое дублирование операций и запуск обработчика перехватывающего устройства. + +### Подмена адреса ячейки (shadow replace) +Подмена адреса ячейки выглядит таким образом: +[Диаграмма](img/intercept_replace_addr.png) +При этом, можно ограничить замену на исключительно чтение/запись, либо установить и на чтение и на запись. + +### Дублирование операций (shadow copy) +Дублировать можно только операции записи, поскольку нет никакой возможности прозрачно внедрить чтение из двух источников так, чтобы оно выглядело как чтение из однонго источника. +[Диаграмма](img/intercept_shadowcopy_addr.png) + +### Запустить обработчик (intercept callback) +При перехвате записи, обработчик ничего не возвращает, при этом может выполнить запись по любому адресу, который он выберет. +При перехвате чтения, обработчик должен вернуть значение, полученное при данном чтении. При этом он всё также может иметь полный доступ к устройству (и, например, снять флаг непрочитанного буфера). +[Пример обработчика](img/intercept_callback.png) + `intercept_conf_t`: diff --git a/img/intercept_callback.png b/img/intercept_callback.png new file mode 100644 index 0000000..66f4e01 Binary files /dev/null and b/img/intercept_callback.png differ diff --git a/img/intercept_replace_addr.png b/img/intercept_replace_addr.png new file mode 100644 index 0000000..dc3ea85 Binary files /dev/null and b/img/intercept_replace_addr.png differ diff --git a/img/intercept_shadowcopy_addr.png b/img/intercept_shadowcopy_addr.png new file mode 100644 index 0000000..1c03cc3 Binary files /dev/null and b/img/intercept_shadowcopy_addr.png differ