On Mon, Oct 01, 2012 at 09:24:58PM +0400, "Артём Н." wrote: > >>>>>>>>> Менять .text в рантайме - плохо. Надо пояснять почему? > >>>>>>>> Да, неплохо бы. Ведь, по-идее, изменение производится ещё до передачи > >>>>>>>> управления, так что, такая ли большая разница (если не брать в расчёт протекторы > >>>>>>>> и прочую навесную фигню, которая может при этом не работать)? > >>>>>>> Страницы кода нельзя оставлять readonly (а это несекурно) > >>>>>> Хм... А поставить им аттрибут после патчинга нельзя? > >>>>> Видимо нет. > >>>> Хм... Почему? > >>> Не знаю, но раз не ставят, значит нельзя или не имеет смысла. Возможно, > >>> флаги доступа ставятся линкером, а не лоадером, и это важно (я не очень > >>> хорошо знаю эту тему). > >> В смысле, ставит-то всё-равно загрузчик? > >> Линкер просто выставляет флаги в заголовке? > >> Насколько я помню, в виндоус вначале производится применение релокаций, затем > >> применяются атрибуты страниц. > >> А как-то иначе оно может работать? > > Ну если вспомнить, что ридонли страницы вообще говоря могут в ПЗУ > > лежать... > Хм... Например? Какая-нибудь область BIOS или видеопамяти? Ну мало ли, это ж теория. EEPROM какой-нибудь. > >>>>>> И как часто приходится патчить... > >>>>> Всмысле? Каждую инструкцию, вызывающую код из другого объекта. > >>>> В смысле, насколько часто адрес загрузки отличается от базового адреса? > >>> С ASLR (по умолчанию в 2.6.12+) - всегда. Без - тоже всегда, у эльфов > >>> базовый адрес никто не меняет. > >> Хм... Любопытно, тогда как работает ASLR для библиотек, в которых секция кода > >> разделяется? > > Разделяется между чем? > Между двумя процессами, использующими данную библиотеку. А в чём проблема? Содержимое страницы не меняется, хоть она и мапится в разные адреса для разных процессов. > >> Или в Linux нет чего-то подобного kernel32.dll (т.е. всё только через libc > >> обёртки над системными вызовами, через прерывания, например)? > > Уточните вопрос. > Т.е., libc не "висит" в памяти, а загружается каждый раз заново для каждого > процесса (ну или загружается только часть libc, поскольку библиотека - архив, а > как оно работает дальше, я не знаю)? Конечно, libc ничем не отличается от других библиотек. > 2. Нет ли у вас ссылок на вменяемую литературу по данной теме, отличающуюся от > исходников ядра по содержанию (больше обзорную, чем перегруженную тех. > подробностями)? Understanding the Linux Kernel -- WBR, wRAR
Attachment:
signature.asc
Description: Digital signature