Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
точно 29.08.05 17:55 Число просмотров: 2810
Автор: z0 <z0> Статус: Member
|
> Он конечно выгружает длл, но файловые секции остаются > закэшироваными в RAM. Но не на уровне объектов типа "dll" а > уже на уровне своппера, как физические страницы. Тут z0 > может лучше разъяснит :) с упоминанием всех ntdll!ZwXXX и > ntdll!IoXXX функций. Тема эта лечится походу только > изменением last modification time на файле. утилита touch, > или просто F4->F2->Esc в фаре.
спасибо хоть ты объяснил о чем идет речь
это действительно проблема и проблема иногда не имеющая решения, сам недавно
наступал на нее. смысл такой - если на странице памяти стоит атрибут READ-ONLY, то
изменения этой страницы под отладчиком (в данном случае речь идет именно о
kernel-mode отладчике - ну например софтайсе) не приводят к соответсвующему
сигналу в кеш что страница изменена (dirty) поэтому кеш будет считать что страница
никогда не изменялась и будет ее подсовывать без перезагрузки из файла.
для юзер-моде страниц решение весьма простое - VirtualProtect с протектом 4 или 40 и
все Ок, а вот для kernel-mode страниц придется поизвращаться поскольку ZwVirtualProtect
НЕ экспортируется ntoskrnl.exe
в данном конкретном случае изменение файла dll может помочь. ну например убедившись
что ссылок на длл нет CreateFile(GENERIC_READ | GENERIC_WRITE) и CloseHandle
|
|
|