Buffer overflow in C + + wordt veroorzaakt door een aantal verschillende onderwerpen . Vaak gebeurt als onderdeel van de werking van een functie ter schrijven naar een matrix of toegang diepe geheugen . Typisch , buffer overflow treedt op wanneer een gebruiker of programmeur ingangen gegevens buiten het bereik van een variabele of een array . Functies die proberen verder te gaan dan deze range kan ook proberen om gegevens te wissen in het systeem , of omleiden van het systeem door het verwijderen of overschrijven van gegevens . Functies in C + + Functies in C en C + + gedragen zoals verwacht , in vergelijking met andere programmeertalen . Functies bestaan , net als elke andere variabele of een systeem van informatie , in het geheugen en worden verwezen door adres . Functies , door zelf , zijn slechts blokken code in het geheugen waarnaar wordt verwezen . Elke fout door een functie referentie gegooid zou kunnen te wijten zijn aan een niet aangegeven functie of een functie verkeerd genoemd . Een buffer overflow fout zou waarschijnlijk komen van de code binnen de functie . Variabelen en Memory C + + is statisch getypt , wat betekent dat de programmeur een variabele type moet opgeven bij het declareren van een variabele . Dit komt omdat C + + vernietigt geheugenblokken van bepaalde afmetingen op basis van de variabele type. Een integer variabele ( int ) verklaarde in een programma zal een ruimte in het geheugen gereserveerd speciaal voor een int te krijgen. Het geheugen blok zal de exacte grootte van een integer zijn . Arrays Arrays zijn verzamelingen van variabelen die in een naam . Bijvoorbeeld , de matrix hieronder maakt een lijst van 10 getallen , die gebruikt kan worden door te verwijzen naar een index ( naam [ 0 ] , naam [ 1 ] , enz. ) op int naam [ 10 ] ; In plaats van een integer , de array vernietigt genoeg continue ruimte voor 10 . Echter , omdat de array- index toegang kan worden geprobeerd op waarden dan hetgeen is opgenomen in de array ( naam [ 11 ] , bijvoorbeeld) , fouten kunnen optreden als de programmeur niet kijken hoe ze gebruik maakt van de array . < br > Buffer Overflow Vanwege de aard van arrays in C + + , kan een array in een functie slachtoffer worden van overstromingen bufferen . Als een gebruiker een tekeninvoer groter dan de matrix aankan binnenkomt , zal de extra tekens data naast de array in overschrijft . Bijvoorbeeld , leegte voorbeeld ( ) { int login [ 15 ] ; int i = 0 ; terwijl ( cin >> een [ i ] ) { i + + ; } } de lus "terwijl" zal nooit eindigen , en tegen de tijd " i " bereikt 15 , zal de gebruiker beginnen met het invoeren van gegevens die het geheugen overschreven . Dit kan onbedoelde gevolgen , zoals het herschikken van een lokale variabele hebben , of , in specifieke omstandigheden , het herschrijven van de functie pointers om te verwijzen naar andere , kwaadaardige code .
|