Шлюз виклику (англ. call gate) — механізм у процесорній архітектурі x86, призначений для зміни рівня привілеїв задачі, і реалізований за допомогою механізму CALL FAR.
Призначення
Призначення шлюзів виклику — дозволити менш привілейованому коду (такому, як звичайний застосунок) викликати код, що виконується з вищим рівнем привілеїв. Це може бути, наприклад, ядро операційної системи, або спеціальні системні бібліотеки чи драйвери, що працюють у кільцях захисту 0, 1 або 2.
Кожен шлюз виклику має відповідний селектор, що обирає відповідний дескриптор у чи . Схожий механізм має у архітектурі x86 обслуговування переривань.
Використання
Якщо шлюз виклику коректно встановлений ядром ОС, прикладна програма здійснює інструкцію CALL FAR з потрібним селектором сегмента як аргументом. Поле «зміщення» (offset) при цьому ігнорується. Після успішної перевірки привілеїв процесор завантажує пару CS: EIP з дескриптора сегмента, і записує до стеку нового рівня привілеїв всю інформацію, потрібну для коректного відновлення програми після виклику (регістри SS, ESP, CS і EIP перерваної задачі, у вказаному порядку. При потреби зі стеку перерваної задачі копіюються параметри, їх кількість вказується у дескрипторі шлюзу.
Після закінчення обробки виклику виконання повертається назад до перерваної задачі за допомогою інструкції RET FAR.
Формат
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
offset 31..16 | P | DPL | 0 | type 1 1 0 0 | 0 | 0 | 0 | count | |||||||||||||||||||||||
selector | offset 15..0 |
typedef struct _CALL_GATE { USHORT OffsetLow; USHORT Selector; UCHAR NumberOfArguments:5; UCHAR Reserved:3; UCHAR Type:5; UCHAR DPL:2; UCHAR Present:1; USHORT OffsetHigh; }CALL_GATE;
Див. також
Джерела
<ref>
з назвою "xen_blog", визначений у <references>
, не використовується в попередньому тексті.Посилання
- Bringing Call Gates Back (Alex Ionescu) [ 12 квітня 2018 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Shlyuz vikliku angl call gate mehanizm u procesornij arhitekturi x86 priznachenij dlya zmini rivnya privileyiv zadachi i realizovanij za dopomogoyu mehanizmu CALL FAR PriznachennyaPriznachennya shlyuziv vikliku dozvoliti mensh privilejovanomu kodu takomu yak zvichajnij zastosunok viklikati kod sho vikonuyetsya z vishim rivnem privileyiv Ce mozhe buti napriklad yadro operacijnoyi sistemi abo specialni sistemni biblioteki chi drajveri sho pracyuyut u kilcyah zahistu 0 1 abo 2 Kozhen shlyuz vikliku maye vidpovidnij selektor sho obiraye vidpovidnij deskriptor u chi Shozhij mehanizm maye u arhitekturi x86 obslugovuvannya pererivan VikoristannyaYaksho shlyuz vikliku korektno vstanovlenij yadrom OS prikladna programa zdijsnyuye instrukciyu CALL FAR z potribnim selektorom segmenta yak argumentom Pole zmishennya offset pri comu ignoruyetsya Pislya uspishnoyi perevirki privileyiv procesor zavantazhuye paru CS EIP z deskriptora segmenta i zapisuye do steku novogo rivnya privileyiv vsyu informaciyu potribnu dlya korektnogo vidnovlennya programi pislya vikliku registri SS ESP CS i EIP perervanoyi zadachi u vkazanomu poryadku Pri potrebi zi steku perervanoyi zadachi kopiyuyutsya parametri yih kilkist vkazuyetsya u deskriptori shlyuzu Pislya zakinchennya obrobki vikliku vikonannya povertayetsya nazad do perervanoyi zadachi za dopomogoyu instrukciyi RET FAR Format31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0offset 31 16 P DPL 0 type 1 1 0 0 0 0 0 countselector offset 15 0typedef struct CALL GATE USHORT OffsetLow USHORT Selector UCHAR NumberOfArguments 5 UCHAR Reserved 3 UCHAR Type 5 UCHAR DPL 2 UCHAR Present 1 USHORT OffsetHigh CALL GATE Div takozhSistemnij viklikDzherelaPomilka cituvannya Teg lt ref gt z nazvoyu xen blog viznachenij u lt references gt ne vikoristovuyetsya v poperednomu teksti PosilannyaBringing Call Gates Back Alex Ionescu 12 kvitnya 2018 u Wayback Machine