Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Write Watch в памяти выделеной CreateFileMapping/MapViewOfFile (https://forum.antichat.xyz/showthread.php?t=145705)

yanus93 04.10.2009 19:31

Write Watch в памяти выделеной CreateFileMapping/MapViewOfFile
 
Пытаюсь задействовать 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 + даже если бы не знали, гранулярность какбэ есть ^______^


Время: 01:51