Я имею ввиду те функции которые входят в системные библиотеки, но которые лежат в юзермоде (ring3), те которые лежат в верхних гигах адресных пространств всех приложений. С одной стороны, мне кажется что система не станет выделать новую память для каждой копии скажем kernel32.dll, в каждом приложении (ведь код то один и тот же) Но как тогда работают перехваты системных функций? Ведь делая их мы переписываем первые байты перехвачиваемых нами функций. И ведь изменяются эти байты, насколько я понимаю, только в адресном пространстве текущего процесса. Тогда каждый процесс имеет свою копию системных библиотек? неужели памяти на всех хватает?? проясните плиз\
Не совсем копию скорее проекцию, почитай статью http://www.wasm.ru/article.php?article=mem_management там описано про memory mapping и как оно работает.