År 1988 , skrivit över den första stora Internet - spread virus en liten , 536 - byte del av minnet på en enda dator och inom fyra dagar , arbetsoförmögen över 60.000 datorer över hela världen . Trots framsteg inom programmeringsspråk , programmering tekniker och operativsystem säkerhet härdning , kan skadliga programmerare fortfarande skapa virus och annan skadlig kod som använder buffertöverskridningar att krascha , kontroll eller stjäla ditt system data. Typer av Memory Deltar
En dator buffert är en del av sitt minne som används för att tillfälligt lagra data som behövs av ett program eller operativsystemet . En ansökan har en fast eller statisk buffert kallas stapeln , vars storlek bestäms när programmet först kompileras och fördelas av operativsystemet när programmet läses in . Heap minne är en annan typ av buffert ett program använder när den är igång . Till skillnad från de statiska buffertar , är heap minne skapas och förstöras som programmet kräver .
Statiska buffertöverskridningar
Statiska buffertöverskridningar uppstår när för mycket data skrivs till en fördefinierad del av minnet i programmet stack. Stapeln innehåller information om programmets funktion och variabler funktion . Objekt på stacken har en fast eller statisk storlek . Om mer data skrivs till en bunt post än det är tänkt att hålla det överskjutande data som lagras i angränsande minnesplatser . De överskjutande data kan förstöra data som redan finns .
Heap Överskridande
Heap minne är utrymmet operativsystemet ger programmet för att skapa och lagra information om flugan . Varje heap block har en pekare till den fysiska adressen på minnesblocket före och efter den. Liksom stack överskridanden , när för mycket data skrivs till en tidigare tilldelade block av minne , spiller överskottet uppgifterna över till nästa block av minne och kan ändra blockets nästa och föregående pekare . Detta kan användas för att krascha ansökan eller plats pekare till minne blockerar skadlig programmerare har tillgång till . Addera Array indexering fel
När arrayer deklareras i de flesta programspråk , är en fast del av minnet i högen redan har avdelats för array data . C-och C + + språk avsätta ordentligt matriser men inte hindra blocket array minne skrivs över . Liksom heap överskridanden , kan indexering fel överskrivning och fördärva intilliggande block av minne . Moderna språk som C # och Java kontrollera array indexering fel vid kompileringen och under programkörning .