[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

pl.comp.programming

Execute Disable Bit

Jedrzej Dudkiewicz

5/7/2007 6:10:00 PM

Mo?e powinienem na grupie o asemblerze albo o OSach, ale zapytam tu:

Co te? takiego wspania3ego jest w Execute Disable Bit w procesorach Intela?
Taka ochrona (tzn. strony pamieci zaznaczone jako "read-only" albo
"executable") jest w ka?dym systemie operacyjnym - chodzi wiec tylko i
wy3?cznie o to, ?e teraz mamy to zaimplementowane "w piasku"?

JD

9 Answers

Bronek Kozicki

5/7/2007 7:08:00 PM

0

Jedrzej Dudkiewicz wrote:
> Mo?e powinienem na grupie o asemblerze albo o OSach, ale zapytam tu:
>
> Co te? takiego wspania3ego jest w Execute Disable Bit w procesorach Intela?
> Taka ochrona (tzn. strony pamieci zaznaczone jako "read-only" albo
> "executable") jest w ka?dym systemie operacyjnym - chodzi wiec tylko i
> wy3?cznie o to, ?e teraz mamy to zaimplementowane "w piasku"?

zaimplementowanie ochrony pamieci w sprzecie to wa?na sprawa, szkoda
tylko ?e tak pó?no


B.


--
Remove -trap- when replying. Usun -trap- gdy odpisujesz.

Jakub Debski

5/7/2007 8:22:00 PM

0

> Co te? takiego wspania3ego jest w Execute Disable Bit w procesorach Intela?
> Taka ochrona (tzn. strony pamieci zaznaczone jako "read-only" albo
> "executable") jest w ka?dym systemie operacyjnym - chodzi wiec tylko i
> wy3?cznie o to, ?e teraz mamy to zaimplementowane "w piasku"?

Chodzi o wydajno?a. Wyobra? sobie, ?e masz sprawdzaa programowo ka?dy
dostep typu "execute" procesora do strony pamieci i pomy?l jaki jest to
narzut...

http://en.wikipedia.org/w...
While it has been proven that some NX bit emulation methods incur an
extremely low overhead, it has also been proven that such methods can
become inaccurate. On the other hand, other methods may incur an
extremely high overhead and be absolutely accurate. No method has been
discovered as of yet without a significant trade-off, whether in
processing power, accuracy, or virtual memory space.

pozdrawiam
Jakub


Robert Winkler

5/7/2007 8:28:00 PM

0

>> Mo?e powinienem na grupie o asemblerze albo o OSach, ale zapytam tu:
>>
>> Co te? takiego wspania3ego jest w Execute Disable Bit w procesorach Intela?
>> Taka ochrona (tzn. strony pamieci zaznaczone jako "read-only" albo
>> "executable") jest w ka?dym systemie operacyjnym - chodzi wiec tylko i
>> wy3?cznie o to, ?e teraz mamy to zaimplementowane "w piasku"?
>
> zaimplementowanie ochrony pamieci w sprzecie to wa?na sprawa, szkoda tylko ?e tak pó?no

Jeste? mo?e w stanie wyja?nia czym to nowe rozwi?zanie ró?ni sie od
dostepnego ju? w 1986 w procesorach Intel 80386.

Aby od?wierzya niektórym osobom pamiea przypomne i?
w trybie chromionym procosora i386
ka?dy blok pamieci opatrzony musi bya stosownym deskryptorem,
w tych 8 bajtach znajduje sie informacja o wielko?ci danego bloku
jego po3o?eniu w ramach 32-bitowej przestrzeni adresowej, jego granulacji, itp.
Najwa?niejszy jest jednak jego 5 bajt,
bit nr.3 informuje procesor czy dany blok to segment kodu, czy te? danych,
natomiast bit nr.1 okre?la czy dany segment jest tylko do odczytu
czy te? mo?e bya modyfikowny przez aplikacje (programu dzia3ajace w RING 1, 2 i 3)
Pozosta3e bity s3u?a do zarz?dzania pamiecia wirtualn?,
okre?laj? czy nast?pi3o kiedykolwiek odwo3ania do danego segmentu pamieci operacyjnej
oraz okre?laja na jakim poziomie uprawnien musi dzia3aa dany w?tek
aby uzyskaa dotep do danego bloku pamieci (RING 0-kernal, 3-user code)
s? one jednak nieistotne dla tej dyskusji.

Jak widaa ju? w '86 roku procesory dysponowa3y skutecznym sprzetowym
zabezpieczeniem przez prób? wykonywania kodu znajdujacego sie w segmencie danych
i przez niepowo3an? modyfikacja segmentu kodu.

Przy3?czam sie wiec do pytanie, w czym Execute Disable Bit
jest tak rewolucyjne skoro ju? od ponad 20 lat dysponujemy
moim zdaniem lepszym rozwi?zaniem?

--
____________
Robert Winkler

Bronek Kozicki

5/7/2007 8:50:00 PM

0

Robert Winkler wrote:
> Najwa?niejszy jest jednak jego 5 bajt,
> bit nr.3 informuje procesor czy dany blok to segment kodu, czy te? danych,
> natomiast bit nr.1 okre?la czy dany segment jest tylko do odczytu
> czy te? mo?e bya modyfikowny przez aplikacje (programu dzia3ajace w RING
> 1, 2 i 3)
> Pozosta3e bity s3u?a do zarz?dzania pamiecia wirtualn?,
> okre?laj? czy nast?pi3o kiedykolwiek odwo3ania do danego segmentu
> pamieci operacyjnej
> oraz okre?laja na jakim poziomie uprawnien musi dzia3aa dany w?tek
> aby uzyskaa dotep do danego bloku pamieci (RING 0-kernal, 3-user code)
> s? one jednak nieistotne dla tej dyskusji.


a czy który? z tych bitów, w3a?ciwy dla user mode, wkazywa3 czy procesor
mo?e pobieraa instrukcje z danego bloku pamieci ? Bo chyba nie, bit 3 o
ile mgli?cie pamietam nie zabrania ustawienia IP na adres z danego
bloku. Ale je?eli wiesz lepiej to mnie o?wiea, dawno nie progamowa3em w
asm :)


B.



--
Remove -trap- when replying. Usun -trap- gdy odpisujesz.

Jakub Debski

5/7/2007 9:04:00 PM

0

> Aby od?wierzya niektórym osobom pamiea przypomne i?
> w trybie chromionym procosora i386
> ka?dy blok pamieci opatrzony musi bya stosownym deskryptorem,

stare dzieje, ale czy jeste? tego pewien?
Z tego co pamietam w trybie chronionym deskryptorem by3 opisany segment
(np. CS, DS)

> Jak widaa ju? w '86 roku procesory dysponowa3y skutecznym sprzetowym
> zabezpieczeniem przez prób? wykonywania kodu znajdujacego sie w segmencie
> danych
> i przez niepowo3an? modyfikacja segmentu kodu.

w3a?nie, nie strone, ale segment. Z tego powodu dane umieszczane w
liniowej przestrzeni segmentu musia3y miea takie same atrybuty. By3oby
to k3opotliwe tym bardziej, ?e nowoczesne systemy operuj? na stronach w
p3askiej przestrzeni adresowej (jeden segment).
Znajdowanie adresu strony fizycznej jest w tym przypadku szybsze ni?
gdyby? musia3 bawia sie z segmentami, chodzi o wydajno?a.

No i przypisanie atrybutów R/W/X poszczególnym stronom pamieci daje
znacznie wiecej mo?liwo?ci (np. mo?na tworzya kompilatory Just In
Time).

> Przy3?czam sie wiec do pytanie, w czym Execute Disable Bit
> jest tak rewolucyjne skoro ju? od ponad 20 lat dysponujemy
> moim zdaniem lepszym rozwi?zaniem?

bo nie by3o lepsze ;)

pozdrawiam
Jakub


Robert Winkler

5/8/2007 5:25:00 AM

0

>> Najwa?niejszy jest jednak jego 5 bajt,
>> bit nr.3 informuje procesor czy dany blok to segment kodu, czy te? danych,
>> natomiast bit nr.1 okre?la czy dany segment jest tylko do odczytu
>> czy te? mo?e bya modyfikowny przez aplikacje (programu dzia3ajace w RING 1, 2 i 3)
>> Pozosta3e bity s3u?a do zarz?dzania pamiecia wirtualn?,
>> okre?laj? czy nast?pi3o kiedykolwiek odwo3ania do danego segmentu pamieci operacyjnej
>> oraz okre?laja na jakim poziomie uprawnien musi dzia3aa dany w?tek
>> aby uzyskaa dotep do danego bloku pamieci (RING 0-kernal, 3-user code)
>> s? one jednak nieistotne dla tej dyskusji.
>
>
> a czy który? z tych bitów, w3a?ciwy dla user mode, wkazywa3 czy procesor mo?e pobieraa instrukcje z danego bloku pamieci ? Bo
> chyba nie, bit 3 o ile mgli?cie pamietam nie zabrania ustawienia IP na adres z danego bloku. Ale je?eli wiesz lepiej to mnie
> o?wiea, dawno nie progamowa3em w asm :)

Funkcje te dzia3aj? i skutecznie zabezpieczaj? komputer przed prób?
wykonywania danych albo modyfikacji kodu.
Wina za to ?e nie zosta3y one wykorzystane le?y po stronie
twórców systemów operacyjnych.
Firma DEC tworz?c swój system celowa3a w mo?liwo?ci sprzetowe
procesorów ALPHA 21064 oferujego inny model zarz?dzania pamieci?
i nie dysponuj?cym takimi zabezpieczeniami, a ?e sta3 sie on
podstaw? j?dra systemu Windows NT, trudno.
Podobnie by3o z systemem Linux, jego twórca tak?e nie wykorzysta3
mechanizmu stronicowania wraz z jego zabezpieczeniami
tylko tryb p3askiej pamieci upraszaj?cy mechanizmy zarz?dzania ni?.
Mo?na nazwaa to "lenistwem studenta", albo "celowaniem w szerszy
profil sprzetowy, nie ograniczony tylko do linii procesorów i386".

Nie wiem czy dobrze kojarze, ale dzis chyba tylko system OpenBSD
stosuje zarz?dzanie pamieci? z wykorzystaniem segmentacji
a zabezpieczenia te zosta3y do niego wprowadzone dopiero od wersji 3.4

--
____________
Robert Winkler

Lopez

5/8/2007 8:47:00 AM

0

Robert Winkler napisa3(a):
>>> Mo?e powinienem na grupie o asemblerze albo o OSach, ale zapytam tu:
>>>
>>> Co te? takiego wspania3ego jest w Execute Disable Bit w procesorach
>>> Intela?
>>> Taka ochrona (tzn. strony pamieci zaznaczone jako "read-only" albo
>>> "executable") jest w ka?dym systemie operacyjnym - chodzi wiec tylko i
>>> wy3?cznie o to, ?e teraz mamy to zaimplementowane "w piasku"?
>>
>> zaimplementowanie ochrony pamieci w sprzecie to wa?na sprawa, szkoda
>> tylko ?e tak pó?no
>
> Jeste? mo?e w stanie wyja?nia czym to nowe rozwi?zanie ró?ni sie od
> dostepnego ju? w 1986 w procesorach Intel 80386.

Wspó3czesne OS'y do zarz?dzania pamieci? w znacznej mierze
u?ywaj? mechanizmu stronicowania, który to nie posiada3
dotychczas ?adnej tego typu ochrony. Mechanizm segmentacji
jest jedynie u?ywany w stopniu zapewniaj?cym podstawowe
dzia3anie systemu. Natomiast procesory AMD64 lub EM64T
dzia3aj?ce w trybie 64-bitowym w ogóle nie u?ywaja tego
mechanizmu. Dlaczego tak jest?
1. Uchrona na poziomie segmentacji na nic sie nie przyda
je?li pracujemy w modelu FLAT, pozwala to wiec na
wykonywanie kodu znajduj?cego sie w segmencie danych,
2. Uzywanie tego mechanizmu jest bardzo niewygodne,
3. Jest od dosya powolny.

> Przy3?czam sie wiec do pytanie, w czym Execute Disable Bit
> jest tak rewolucyjne skoro ju? od ponad 20 lat dysponujemy
> moim zdaniem lepszym rozwi?zaniem?

To jest co?, na co w3asnie czekali?my od 20 lat.

PS. ZTCW to rozwiazanie to jako pierwsze pojawi3o
sie w procesorach produkowanych przez AMD.

--
Pozdrawiam
Lopez

Bernard

5/8/2007 12:16:00 PM

0

Jedrzej Dudkiewicz wrote:
> Mo?e powinienem na grupie o asemblerze albo o OSach, ale zapytam tu:
>
> Co te? takiego wspania3ego jest w Execute Disable Bit w procesorach Intela?

Nic wspania3ego - jest to normalny atrybut strony, obecny w prawie
wszystkich konstrukcjach jednostek stronicowania poza x86 "od zawsze",
pominiety przy projektowaniu jednostki stronicowania i386 i wprowadzony
20 lat za pó?no przez AMD.

> Taka ochrona (tzn. strony pamieci zaznaczone jako "read-only" albo
> "executable") jest w ka?dym systemie operacyjnym - chodzi wiec tylko i
> wy3?cznie o to, ?e teraz mamy to zaimplementowane "w piasku"?

Chodzi A? o to, ?eby 3atwo dawa3o sie zablokowaa próbe "wykonania"
danych nie anga?uj?c do tego jednostki segmentacji, której a)
praktycznie nie ma w trybie 64-bitowym, b) jest w tym zastosowaniu mniej
elastyczna c) trudniej j? systemowi programowaa dla ka?dego procesu
oddzielnie.

Jedrzej Dudkiewicz

5/8/2007 12:20:00 PM

0

> Mo?e powinienem na grupie o asemblerze albo o OSach, ale zapytam tu:
>
> Co te? takiego wspania3ego jest w Execute Disable Bit w procesorach
Intela?
> Taka ochrona (tzn. strony pamieci zaznaczone jako "read-only" albo
> "executable") jest w ka?dym systemie operacyjnym - chodzi wiec tylko i
> wy3?cznie o to, ?e teraz mamy to zaimplementowane "w piasku"?

Ok, dzieki za wszystkie odpowiedzi.

JD