Re[4]: быстро и безопасно проверить что указатель writable
От: ononim  
Дата: 07.09.12 14:23
Оценка:
А>>>Без проверки итак фолт будет если память не для записи. Можно обратиться к памяти без её изменения, к примеру сделать or/xor с нулём. При этом Lock не нужен, так как память не изменяется.
O>>дык изменяется
O>>см http://rsdn.ru/forum/asm/4875241.1.aspx
Автор: ononim
Дата: 30.08.12

А>Ну и накой тогда проверка раз что то в памяти меняется не пойму ?
Ок, если оч хочется знать: имеется виртуальная файловая система сделанная на юзермодных хуках. То есть обхучено все начиная с ntdll!NtCreateFile
Файлмэпинги на виртуальные файлы реализованы через vectored exception handler. То есть делаем недоступную страничку, когда происходит к ней обращение — приходит исключение, срабатывает VEH prehandler, подчитывает из файла нужные данные, а если исключение на запись — еще и помечает нужный кусок размером N килобайт в своем кэше как 'dirty'. Все работает круто, но как обычно есть одно но: если поинтер на такой view передавать в системный сервис ядра, никакой VEH prehandler само по себе не вызовется, а тупо сервис вернет ошибку наружу. Потому сделано следующее — обхукана туева хуча системных сервисов, и все подозрительные буфера которые передаются им в параметрах предварительно "облапываются" в нужных местах, что приводит к срабатыванию VEH и все работает правильно.
Так вот я озадачился вопросом оптимизации облапывания.

А>RTFM !

сам такой
Как много веселых ребят, и все делают велосипед...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.