- Exploitovací techniky paměť -
Při programování v nějakém vysokoúrovňovém jazyce, jako je třeba C, se proměnné deklarují datovým typem. Tyto datové typy mohou být např. celá čísla ( integer) nebo znaky ( character) nebo jiné, třeba i uživatelem definované struktury. Pro tyto proměnné je nezbytné alokovat dostatečný prostor, což pro celé číslo může být 4 bajty a pro znak třeba jeden jediný bajt. To znamená, že celé číslo má 32 bitů místa (4 294 967 296 možných hodnot), zatímco znak má pouhých 8 bitů místa (256 možných hodnot).
Občas se stane, že je pro pole znaků alokováno deset bajtů, ale doopravdy se využijí jen čtyři. Jestliže je slovo „test“ uloženo v desetiznakovém poli, 28 0x200 Programování zbudou na jeho konci nevyužité znaky. V tom případě se použije nula ( bitová nula, nebo také znak null) pro ukončení řetězce. Ta říká všem funkcím pro práci s řetězci, že mají svoji činnost ukončit právě na tom místě.
Paměť programu je rozdělena na pět segmentů: text, data, bss (block started,by symbol, segment neinicializovaných dat), heap ( halda) a stack ( zásobník).,Každý segment reprezentuje speciální část paměti, která je vymezena,pro určité účely.,Segment text se někdy značí i jako code. To je místo, kde se nacházejí,instrukce strojového jazyka.