Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Danewejściowedostarczanezzewnętrznychźródeł(odużytkownikówiinnychaplikacji)
przetwarzaneiprzechowywanegłównienastosieorazstercie.Jeśliprogramnie-
dziewłaściwieobsługiwałwejścia,napastnikmożenadpisaćwrażliwewartościizmienić
przebiegdziałaniaprogramu.
Segmentkodu
Tensegment,nazywanytakżesegmentemtext,zawieraskompilowanykodwykonywalny
programuorazelementywymagane(np.współużytkowanebiblioteki).Uprawnienieza-
pisudotegosegmentujesttypowowyłączonezdwóchpowodów:
Kodniezawierazmiennych,azatemniemapowodu,abynadpisywaćsiebiesamego.
Segmentykodutylkodoodczytumogąbyćwspółużytkowaneprzezróżnekopie
programuwykonywanerównocześnie.
Wminionychczasachspotykanebyłyrozwiązania,wktórychkodmodyfikowałsięsam
wceluzwiększeniaprędkościdziałania.Większośćwspółczesnychprocesorówzostała
zoptymalizowanapodkątemwykonywaniakodutylkodoodczytu,przezcomodyfiko-
waniekodupociągazasobąspadekwydajności.Możnawięcbezpieczniezałożyć,żejeśli
programpróbujemodyfikowaćzawartośćsegmentukodu,próbataniebyłazamierzona.
Kompilatorytypujust-in-time(JIT),takiejakJavaiMicrosoft.NET,przygotowują
wykonywalnestronypamięciiwypełniająjeinstrukcjami,atymsamymdla
aplikacjinapisanychwtychjęzykachtypowejestzapisywanieimodyfikowanie
koduumieszczonegopozasegmentemtext.
SegmentydanychiBSS
SegmentydanychorazBSS(blockstartedbysymbol)zawierająstatyczneiglobalnezmien-
neprogramy.Teobszarypamięcizazwyczajmająwłączonemożliwościodczytuizapi-
su,awniektórychprzypadkachmożliwejestwykonanieinstrukcjizawartychwtych
segmentach.
Sterta
Sterta(heap)jestczęstonajwiększymsegmentempamięciprzydzielonejdoprogramu.
Aplikacjeużywająstertydoprzechowaniatrwałychdanych,któreistniejąpopowrocie
zwykonaniafunkcji(gdyjejzmienneniejużdostępne).Danyminasterciezarządza-
funkcjealokowaniaidealokowaniapamięci.WprzypadkujęzykaCdoalokowania
fragmentupamięcizwyklewykorzystywanajestfunkcja
malloc
,zaśdojejzwolnienia
wywoływanajestfunkcje
free
,choćmożliwejestużycierównieżinnychfunkcjiwcelu
optymalizowaniaalokacji.
34
|
Rozdział3:Lukiiprzeciwnicy