Jo jo, pekne, dalsi bezpecnostni dira :-). Ale ta zaplata, zapomnel jste dodat, podle clanku v soucasne dobe funguje jen pro nejnovejsi CPU ("Although the support for this feature is currently limited to 64-bit processors, Microsoft expects future 32-bit and 64-bit processors to provide execution protection.").
BTW. uz si nevzpominam presne (a hledat v RTFM neni cas), ale uz drivejsi deskriptory procesoru INtel & comp. nabizely, zda dany segment je executable, nebo ne.
S tim Windows open source me napada, zda by Linux ustal ten napor. No flame pls.
Ved to ze len segment :) to je ten problem. Segmenty sa skoro nepouzivaju. Kazdy proces ich dostane zopar (lebo ich musi mat) a aj tie su roztiahnute na celu pamat (4GiB) tzv. flat model.
AMD dalo tento flag aj na stranku (4KiB, 4MiB). Intel to mal vymyslene dobre, ale spatna kompatibilita a lenivost znemoznili pouzivat nonexec flag na segnemtoch.
Vela aplikacii nefunguje s NX flagom, lebo si v datovom segmente skladaju kod ktory potom spustaju. Niektore kodeky si poskladaju dekoder s mmx, sse alebo 3dnow podla procesoru. Oracle pre procedury(?), ...
Jasne, ze je to na cely segment, ale nikdo nikoho nenuti mit flat model, ze (hovorime o 32b x86 platforme). Problemem je, ze programatori jsou take jen lide (a docela lini lide :-), a dale dany typ OS je hodne rozsireny. Zajimave by bylo, jak by to dopadlo, kdyby se nekdo pustil do "predelani" kernelu, pokud by Windows byly open source.
Aplikace s NX flagem - sorry, ale jak jsem cetl, tak tento flag je implementovan az v poslednich CPU, takze starsi CPU je mit nebudou. Od Pentia2 jsem prestal podrobne sledovat tuto procesorovou radu ;-)...
IMHO je myslenka samomodifikujiciho se kodu super, ale ne v tomto prostredi!(?) To uz by se mi vice zamlouvaly programy specielne psane pro dany typ CPU...
Ale to je přece nesmysl, NX bit samomodifikujícímu kódu samozřejmě nebrání, jenom je třeba to dělat správně a před provedením toho kódu dané stránce přidat přístup PAGE_EXECUTE.