PDA

Просмотр полной версии : Write Watch в памяти выделеной CreateFileMapping/MapViewOfFile


yanus93
04.10.2009, 19:31
Пытаюсь задействовать Write Watch на память выделенную CreateFileMapping/MapViewOfFile (Shared memory)
Если бы пользовался VirtualAlloc, использовал бы MEM_WRITE_WATCH флаг.
Но в моем случае это не подходит
Помогите пожалуйста.

Hiro Protagonist
05.10.2009, 07:47
какбэ MMF совсем другой механизм, неподдерживающий write watch.

yanus93
05.10.2009, 13:39
Да, я понимаю, но тем не менее хочу это как то осуществить. Пусть это называется не write watch а как то по другому. Мне нужно знать приблизительно какие районы выделенной памяти были изменены.

sn0w
05.10.2009, 15:12
http://forum.antichat.ru/showthread.php?p=1496972#post1496972

вот по мотивам этого можешь. на регион - PAGE_EXECUTE_READ

KiUserExceptionDispatcher)(IN PEXCEPTION_RECORD ExceptionRecord, IN PCONTEXT ContextFrame);

ловишь STATUS_ACCESS_VIOLATION
в контексте фрейма и записи все что надо есть

sn0w
05.10.2009, 16:56
правда там адрес который выдал исключение

yanus93
05.10.2009, 18:29
Спасибо!
Однако, ну поймал, а дальше что?
Записаться то оно должно, а кроме того, может ведь одной страницей и не ограничиться.
Отключить protection?
Тогда как узнаю где оно остановилось?

Hiro Protagonist
06.10.2009, 00:21
дык строй таблицу по страницам региона. И при перехвате исключения взводи флаг соответствующий. Для оптимизации лучше снимать =\ но пипец какже это будет медленно всё ... кривое имхо решение, лучше пересматривай алго свой, чтобы уйти от этого =\

"... правда там адрес который выдал исключение ..."
и что? на x86 страницы одинаковые + мы знаем imagebase MMF + даже если бы не знали, гранулярность какбэ есть ^______^