Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Zahar Kiselev                        2:5030/382.1   14 Oct 2004  00:29:08
 To : Nick Gazaloff
 Subject : Re: неисполняемый стэк в 2.4 ?
 -------------------------------------------------------------------------------- 
 
 
 Oct 13 23:07 04, Nick Gazaloff wrote to Zahar Kiselev:
 
  NG> Сегмент стека (мы ведь о нем говорим) _обязан_ быть сегментом данных 
  NG> (не кода), и обязательно read-write.
 
 Согласен.
 
  NG> При этом код, помещенный в него, может 
  NG> исполняться. Hикакой аппаратнной защиты нет.
 
 Опять смотрим в книгу Орловского, на которую я уже ссылался. 
 Страница 66. Таблица "Байт прав доступа дескрипторов сегментов кодов/данных".
 Третий бит - _отдельный_ признак исполняемости. Первый бит - разрешение записи. 
 То есть разрешение записи не зависит от разрешения исполнения - это _разные_
 биты. Вот сделать нечитаемый, но при этом исполняемый сегмент - не получится,
 так как отдельного бита на разрешение чтения - нет. А такой чтобы R/W, но при
 этом не исполняемый - можно. Соответственно можно и незаписываемый, но
 исполняемый сегмент кода, что тоже полезно.
 
  NG> Да и странно было бы, если бы она была, но _ни_одна_ (!) ОС на x86 ее 
  NG> не  использовала.
 
 Ты хочешь сказать, что знаешь внутренности _всех_ систем на x86, включая редкие 
 и экзотические? Я про себя такое утверждать не рискну. Зато когда-то я очень
 любил возиться с такой забытой сейчас штукой как дос-экстендеры. Вот они, в
 отличие от Линукса, были сделаны на основе именно сегментного, а не страничного 
 механизма - так как свопа, для которого одинаковые страницы удобны, там небыло, 
 а вот удобные для программиста сегменты - были. Можно было например даже
 поместить массив в отдельный сегмент - и при вылезании за его границу процессор 
 сам обнаруживал ошибку в программе. Или те данные, которые не должны
 модифицироваться - засунуть в r/o сегмент - и тоже получить ошибку если случайно
 в них полезешь что-то писать. Еще там проверялись межсегментные передачи
 управления - просто так в любое место "дальний jmp" не сделаешь - надо чтобы в
 сегментной части адреса были именно адрес заранее созданного правильного
 сегмента, а в смещении - число, не превышающее его заданный размер. Атрибуты и
 размеры сегментов задавались при сборке программы в специальном управляющем
 файле для линкера. Возиться с этим было весьма интересно. Я сожалею, что в
 Линуксе нам не предлагается "внутрипрограммное" использование встроенных в
 процессор механизмов защиты. Выдали кусок памяти,
 поделили на код и данные, засунули туда программу и она там что угодно может
 делать, ну разве что система наверно не даст писать в сегмент кода. А данные все
 одним куском лежат и неправомерные обращения не отслеживаются. То же самое и с
 переходами и вызовами подпрограмм в сегменте кода - при косвенном вызове по
 неправильно сформированному адресу - легко попасть "пальцем в небо", а вылезет
 это только когда среди тех случайных байтов куда попали - встретится 
 какая-нибудь неразрешенная в пользовательском режиме команда, а это может
 произойти довольно далеко от точки перехода, особенно если попали в массив
 нулевых байтов. Вот тут кстати разработчики процессора немного промахнулить -
 надо бало попытку исполнения команды, состоящей из нулевых байтов -
 интерпретировать если не как ошибку,то хотябы как вызов отладчика.
 
 Hадеюсь, что за давностью лет не сильно напутал в своих воспоминаниях о
 дос-экстендерах...
 
 Zahar(@spbdept.rbc.ru) Остров Большой Березовый: http://birch-island.spb.ru
 
 --- Msged/LNX 6.1.1
  * Origin: N:60.17'54" E:28.39'40" (2:5030/382.1)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 неисполняемый стэк в 2.4 ?   Zahar Kiselev   09 Oct 2004 02:46:36 
 Re: неисполняемый стэк в 2.4 ?   Nick Gazaloff   09 Oct 2004 05:11:39 
 Re: неисполняемый стэк в 2.4 ?   Sergey_Afonin   09 Oct 2004 13:55:07 
 Re: неисполняемый стэк в 2.4 ?   Nick Gazaloff   09 Oct 2004 21:03:42 
 Re: неисполняемый стэк в 2.4 ?   Sergey_Afonin   09 Oct 2004 22:51:14 
 Re: неисполняемый стэк в 2.4 ?   Zahar Kiselev   10 Oct 2004 06:11:10 
 Re: неисполняемый стэк в 2.4 ?   Zahar Kiselev   09 Oct 2004 20:41:58 
 Re: неисполняемый стэк в 2.4 ?   Slava Astashonok   09 Oct 2004 22:56:48 
 Re: неисполняемый стэк в 2.4 ?   Max Krasilnikov   09 Oct 2004 23:43:53 
 Re: неисполняемый стэк в 2.4 ?   Slava Astashonok   09 Oct 2004 23:57:39 
 Re: неисполняемый стэк в 2.4 ?   Max Krasilnikov   10 Oct 2004 00:08:36 
 Re: неисполняемый стэк в 2.4 ?   Zahar Kiselev   10 Oct 2004 01:56:12 
 Re: неисполняемый стэк в 2.4 ?   Slava Astashonok   10 Oct 2004 10:39:22 
 Re: неисполняемый стэк в 2.4 ?   Nick Gazaloff   10 Oct 2004 17:12:30 
 Re: неисполняемый стэк в 2.4 ?   Slava Astashonok   11 Oct 2004 01:57:11 
 Re: неисполняемый стэк в 2.4 ?   Nick Gazaloff   11 Oct 2004 09:15:57 
 Re: неисполняемый стэк в 2.4 ?   Slava Astashonok   11 Oct 2004 09:27:52 
 Re: неисполняемый стэк в 2.4 ?   Nick Gazaloff   11 Oct 2004 09:33:43 
 Re: неисполняемый стэк в 2.4 ?   Slava Astashonok   11 Oct 2004 09:43:40 
 Re: неисполняемый стэк в 2.4 ?   Nick Gazaloff   11 Oct 2004 10:15:16 
 Re: неисполняемый стэк в 2.4 ?   Slava Astashonok   11 Oct 2004 11:05:29 
 Re: неисполняемый стэк в 2.4 ?   Nick Gazaloff   11 Oct 2004 11:18:25 
 Re: неисполняемый стэк в 2.4 ?   Slava Astashonok   11 Oct 2004 11:29:50 
 Re: неисполняемый стэк в 2.4 ?   Sergey Kudriavtsev   12 Oct 2004 15:41:28 
 Re: неисполняемый стэк в 2.4 ?   Slava Astashonok   11 Oct 2004 13:15:34 
 Re: неисполняемый стэк в 2.4 ?   Sergey Kudriavtsev   12 Oct 2004 15:56:59 
 Re: неисполняемый стэк в 2.4 ?   Sergey Kudriavtsev   12 Oct 2004 15:35:46 
 Re: неисполняемый стэк в 2.4 ?   Nick Gazaloff   13 Oct 2004 14:42:50 
 Re: неисполняемый стэк в 2.4 ?   Sergey Kudriavtsev   13 Oct 2004 19:53:13 
 Re: неисполняемый стэк в 2.4 ?   Zahar Kiselev   12 Oct 2004 19:23:38 
 Re: неисполняемый стэк в 2.4 ?   Nick Gazaloff   12 Oct 2004 23:36:14 
 Re: неисполняемый стэк в 2.4 ?   Zahar Kiselev   13 Oct 2004 02:33:28 
 Re: неисполняемый стэк в 2.4 ?   Nick Gazaloff   13 Oct 2004 11:59:08 
 Re: неисполняемый стэк в 2.4 ?   Zahar Kiselev   13 Oct 2004 14:15:14 
 Re: неисполняемый стэк в 2.4 ?   Nick Gazaloff   13 Oct 2004 23:07:35 
 Re: неисполняемый стэк в 2.4 ?   Zahar Kiselev   14 Oct 2004 00:29:08 
 Re: неисполняемый стэк в 2.4 ?   Roman Belenov   14 Oct 2004 11:40:48 
 Re: неисполняемый стэк в 2.4 ?   Sergey Kudriavtsev   15 Oct 2004 22:58:33 
 Re: неисполняемый стэк в 2.4 ?   Slava Astashonok   14 Oct 2004 10:16:11 
 Re: неисполняемый стэк в 2.4 ?   Sergey Kudriavtsev   15 Oct 2004 22:56:43 
 Re: неисполняемый стэк в 2.4 ?   Sergey Mudry   13 Oct 2004 23:16:54 
 Re: неисполняемый стэк в 2.4 ?   Zahar Kiselev   14 Oct 2004 00:59:28 
 Re: неисполняемый стэк в 2.4 ?   Sergey Mudry   14 Oct 2004 23:47:30 
 Re: неисполняемый стэк в 2.4 ?   Kirill Frolov   15 Oct 2004 00:26:31 
 Re: неисполняемый стэк в 2.4 ?   Zahar Kiselev   13 Oct 2004 21:46:46 
 Re: неисполняемый стэк в 2.4 ?   Sergey Kudriavtsev   15 Oct 2004 22:57:32 
 Re: неисполняемый стэк в 2.4 ?   Slava Astashonok   16 Oct 2004 14:07:35 
 Re: неисполняемый стэк в 2.4 ?   Sergey Kudriavtsev   13 Oct 2004 19:56:25 
 Re: неисполняемый стэк в 2.4 ?   Nick Gazaloff   15 Oct 2004 14:49:59 
 Re: =?koi8-r?B?zsXJ09DPzM7Rxc3ZyiDT1NzLINcgMi40ID8=?=   Unrau Alexander   15 Oct 2004 17:35:19 
 Re: неисполняемый стэк в 2.4 ?   Alexei Takaseev   10 Oct 2004 13:15:41 
 Re: неисполняемый стэк в 2.4 ?   Sergey_Afonin   09 Oct 2004 13:55:07 
 Re: неисполняемый стэк в 2.4 ?   Max Krasilnikov   09 Oct 2004 23:45:57 
Архивное /ru.linux/3288416d551e.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional