Can segments overlap in protected mode?

chrstrbrts

Senior member
Aug 12, 2014
522
3
81
In real mode, segments can overlap.

In 64-bit mode, all segments are usually set to 0 so all segments overlap perfectly.

But what about protected mode?

Are you allowed to have segments overlap in protected mode?

Because of privilege level enforcement, is there any hardware level mechanism for making sure that segments don't overlap?
 

exdeath

Lifer
Jan 29, 2004
13,679
10
81
Sure. They overlap all the time.

Modern x86 OSes have been overlapping at least 4 segments since forever. There is no limitation to prevent you from specifying same or overlapping base and limit in your segment descriptors. In fact you MUST overlap segments for modern page based x86 OSes (prior to AMD64/DEP which finally does away with segmentation):

CS read/write/exec PL 0 0x08
DS/ES/SS read/write PL 0 0x10
CS read/write/exec PL 3 0x1B
DS/ES/SS read/write PL 3 0x23

These 4 segments have always overlapped the entire 4GB x86-32 address space from 0-4GB and is a vital quirk/flaw of x86 because x86 didn't get standard page level r/w/x permission bits in the page tables themselves until AMD64/DEP.

This is historically why x86 platforms are so vunerable to buffer overflow attacks. Overlapping execute segment with data segment allows self modifying code and stack execution. But it is necessary to achieve a flat memory model to use with a paging system which did not have page table entry r/w/x bits until AMD64/DEP extensions.

Technically you could use descriptors to fine tune permission but 4k page granularity, 4GB memory map, multitasking, and only 8191 GDT usable entries made this unfeasible from the launch of 80386 at a time when paging was the way to go and segmentation was only a necessary evil for legacy compatibly with 286.

Told you x86 was a *redacted* of epic proportions LMAO.

So is swearing in the technical forums, so don't do it! -- Programming Moderator Ken g6
 
Last edited by a moderator:

chrstrbrts

Senior member
Aug 12, 2014
522
3
81
Sure. They overlap all the time.

Modern x86 OSes have been overlapping at least 4 segments since forever. There is no limitation to prevent you from specifying same or overlapping base and limit in your segment descriptors. In fact you MUST overlap segments for modern page based x86 OSes (prior to AMD64/DEP which finally does away with segmentation):

CS read/write/exec PL 0 0x08
DS/ES/SS read/write PL 0 0x10
CS read/write/exec PL 3 0x1B
DS/ES/SS read/write PL 3 0x23

These 4 segments have always overlapped the entire 4GB x86-32 address space from 0-4GB and is a vital quirk/flaw of x86 because x86 didn't get standard page level r/w/x permission bits in the page tables themselves until AMD64/DEP.

This is historically why x86 platforms are so vunerable to buffer overflow attacks. Overlapping execute segment with data segment allows self modifying code and stack execution. But it is necessary to achieve a flat memory model to use with a paging system which did not have page table entry r/w/x bits until AMD64/DEP extensions.

Technically you could use descriptors to fine tune permission but 4k page granularity, 4GB memory map, multitasking, and only 8191 GDT usable entries made this unfeasible from the launch of 80386 at a time when paging was the way to go and segmentation was only a necessary evil for legacy compatibly with 286.

Told you x86 was a *redacted* of epic proportions LMAO.

So is swearing in the technical forums, so don't do it! -- Programming Moderator Ken g6

Where've you been?

....missed the breadth of your insight, man.
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |