IWebBrowser2 перехват чтения реестра
От: WinAx https://www.zmaxhomeindustry.tk/
Дата: 12.07.17 11:14
Оценка:
Необходимо для каждого процесса моей программы с IWebBrowser2 задать отдельную папку с временными файлами (куки, кеш и тд).
Насколько мне известно, стандартными методами этого сделать нельзя.

Process Monitor показал что мой процесс вызывает RegQueryValue для чтения пути к временным файлам.

Перехватил RegQueryValue (A и W) с помощью Detour — вызовы не происходили.

API Monitor показал что вызовы идут RegQueryValueEx но НЕ для чтения пути к временным файлам.

Перехватил RegQueryValueEx. Вызовы пошли аналогичные результатам API Monitor.

Как сделать перехват как у Process Monitor?
Или рак решить задачу другим способом?
Re: IWebBrowser2 перехват чтения реестра
От: EreTIk EreTIk's Box
Дата: 12.07.17 11:55
Оценка:
WA>Необходимо для каждого процесса моей программы с IWebBrowser2 задать отдельную папку с временными файлами (куки, кеш и тд).
WA>Насколько мне известно, стандартными методами этого сделать нельзя.

WA>Process Monitor показал что мой процесс вызывает RegQueryValue для чтения пути к временным файлам.


WA>Перехватил RegQueryValue (A и W) с помощью Detour — вызовы не происходили.


WA>API Monitor показал что вызовы идут RegQueryValueEx но НЕ для чтения пути к временным файлам.


WA>Перехватил RegQueryValueEx. Вызовы пошли аналогичные результатам API Monitor.


WA>Как сделать перехват как у Process Monitor?

WA>Или рак решить задачу другим способом?

У ProcMon'а есть возможность отображения стека вызовов события. Там будет видно какую функцию вызывает IWebBrowser2 (вероятно сразу нативную, раз перехваты в ADVAPI32 не видят чтения).

P.S. ProcMon, как видно из того же стека вызовов, следит за реестром c использованием RegistryCallback в драйвере.
Re[2]: IWebBrowser2 перехват чтения реестра
От: WinAx https://www.zmaxhomeindustry.tk/
Дата: 12.07.17 12:43
Оценка:
Здравствуйте, EreTIk, Вы писали:

ETI>У ProcMon'а есть возможность отображения стека вызовов события. Там будет видно какую функцию вызывает IWebBrowser2 (вероятно сразу нативную, раз перехваты в ADVAPI32 не видят чтения).


ETI>P.S. ProcMon, как видно из того же стека вызовов, следит за реестром c использованием RegistryCallback в драйвере.


Detour в состоянии перехватить NtQueryValueKey?

Почитал немного о RegistryCallback
Вроде подходит для моей задачи
Но это обязательно нужно писать драйвер или можно запихнуть в программу?
Re[3]: IWebBrowser2 перехват чтения реестра
От: EreTIk EreTIk's Box
Дата: 12.07.17 13:12
Оценка: 6 (1)
WA>Detour в состоянии перехватить NtQueryValueKey?
Думаю да. Плюс ко всему, реализация IWebBrowser2, вероятно, вызывает ntdll!NtQueryValueKey по статическому импорту и можно просто установить перехват впатчив в таблицу импорта свой обработчик (вопрос в переносимости: все ли целевые реализации IWebBrowser2 используют этот нативный вызов). С другой стороны: никто не гарантирует, что в новой ОС не появится NtQueryValueKeyEx и реализация IWebBrowser2 не будет использовать ее.

WA>Почитал немного о RegistryCallback

WA>Вроде подходит для моей задачи
WA>Но это обязательно нужно писать драйвер или можно запихнуть в программу?
Это интерфейс только для драйверов. IMHO, ради такой задачи самостоятельно реализовывать драйвер не стоит: время на обучение, время на реализацию, время на тестирование, покупка сертификата. Ну а в результате — ошибка в драйвере приводит к BSOD'у всей системы (или, если ошибка будет эксплуатируемой, вредоносное ПО будет таскать ваш подписанный драйвер, что бы с помощью него выполнить произвольный не подписанный код в ядре, а ваше ПО будут детектить антивирусы по драйверу).
Отредактировано 12.07.2017 13:14 EreTIk . Предыдущая версия .
Re: IWebBrowser2 перехват чтения реестра
От: Aniskin  
Дата: 12.07.17 13:42
Оценка: 11 (2)
Здравствуйте, WinAx, Вы писали:

WA>Необходимо для каждого процесса моей программы с IWebBrowser2 задать отдельную папку с временными файлами (куки, кеш и тд).

WA>Насколько мне известно, стандартными методами этого сделать нельзя.

WA>Process Monitor показал что мой процесс вызывает RegQueryValue для чтения пути к временным файлам.


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