[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Вопросы по созданию пакета.



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


Reply to: