· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› ограничение доступа к памяти

Посл.отвђт Сообщенiе


Дата: Июн 3, 2004 18:01:27

подскажите плз, как организовывается запрет на доступ к памяти программам? как действует драйвер? ведь для этого надо каждое обращение к памяти отслеживать.


Дата: Июн 3, 2004 18:06:55

на этом сайте есть раздел "статьи", где эти вопросы прекрасно освещены.


Дата: Июн 4, 2004 17:28:38

cworm

почитай статьи БрокенСворда, а лучше интелловские мануалы


Дата: Июн 5, 2004 16:30:10

> подскажите плз, как организовывается запрет на доступ к
> памяти программам? как действует драйвер? ведь для
> этого надо каждое обращение к памяти отслеживать.
ты конкретнее скажи, что тебе надо ;)
ведь можно поставить и точку останова, и задисаблить страницу и (из драйвера) подправить каталог страниц так, что винда (и дамперы) вообще забудут о том, что здесь что-то есть.
тебя вообще какой уровень интересует: аппаратный (как это релизовано в кремнии) или программный (как можно использовать то, что реализовано в кремнии), а если программный то какой - прикладного или драйверного уровня?

"как работает драйвер" - он просто вращается на нулевом кольце и потому всюду может совать свой нос. например, изменит DPL сегмента кода/данных с 3 на 0 и при каждом обращении к ним будет ловить эксепшен, который будет обрабатывать.


Дата: Июн 5, 2004 17:05:40

спасибо тебе, kaspersky, что ответил.

а как это "подправить каталог страниц" и где этот каталог находится? я насколько понял, можно забанить отдельный адрес и целый блок адресов, в системе, наверно, лучше встроить все это в ядро.
мне бы желательно на самом низком уровне :)
Спасибо.


Дата: Июн 5, 2004 19:02:59

> а как это "подправить каталог страниц" и где этот каталог находится?
каталог страниц/таблица страниц (PDE/PTE) это то, с помощью чего обеспечивается виртуализация адресного пространства, т.е. связь между виртуальными и физическими адресами. CR3 указывает на текущую PDE специфичную для данного процесса, структура PDE/PTE описана в любой нормальной книжке по асму от 386 и выше. драйвер может туда залезть и закрепить виртуальную страницу за другой физической страницей, если мы отобразим одну физическую страницу на две и более виртуальных, тогда при записи в страницу А, данные мгновенно появится в страницах Б и С, а на этом можно сыграть!
еще можно изменить атрибуты страниц (ну там присуствтует ли она в памяти, каких привилегий требует) или же загадить PDE/PTE, но делать это следует очень осторожно, иначе системе может сильно поплохеть.


Дата: Июн 5, 2004 19:08:45

> я насколько понял, можно забанить отдельный адрес и
> целый блок адресов, в системе, наверно, лучше встроить
> все это в ядро. мне бы желательно на самом низком уровне :)
а это смотря для чего ;)
если для защиты от непреднамеренного достпуа (например, ты хочешь защитить критические данные от удара по памяти), то лучше VirtualProtect ничего нет, если же для защиты от ломателей - то ломать драйвер еще проще. другое дело, что на уровне драйвера можно перехватывать обращения дамперов - и если вызов идет из ReadMemory, подсовывать всякую хрень вместо полезный данных. так же можно расположить мины-ловушки (впрочем, мины можно поствить и на прикладном уровне) - страницы к которым при нормальном развитии событий программа никогда не обращается, а коль скоро такое обращение произошло, значит, нас дампят и тогда мы... либо вешает систему, либо делаем "заподло", либо подсовываем мусор вместо актуального кода, либо же просто "выкусываем" из кода процедуру защиты - там чтобы программа не заводилась, но внешне выглядело все нормально.


Дата: Июн 6, 2004 11:18:21

Kaspersky, ты настоящий друг. Спасибо.


Дата: Июн 7, 2004 15:34:08

> Kaspersky, ты настоящий друг. Спасибо.
если будут какие трудности с реализаций - обращайся


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.061