Datamaskin
  | Hjem | Hardware | Nettverk | Programmering | Software | Feilsøking | Systems | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringsspråk
  • Delphi Programming
  • Java Programming
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl Programming
  • Python Programming
  • Ruby Programming
  • Visual Basics Programming
  •  
    Datamaskin >> Programmering >> C /C + + Programming >> Content
    Beskrivelse av en C + + funksjon og hvordan det fører til en Buffer Overflow
    Buffer overflow i C + + er forårsaket av flere ulike problemer. Ofte oppstår det som en del av driften av en funksjon ment å skrive til en matrise eller få tilgang til dyp hukommelse . Vanligvis oppstår buffer overflow når en bruker eller programmerer inn data utenfor rekkevidden til en variabel eller en matrise. Funksjoner som forsøker å gå utover dette området kan også forsøke å slette data i systemet , eller omdirigere systemet ved å slette eller overskrive informasjon. Funksjoner i C + +

    Funksjoner i C og C + + oppfører seg som forventet , i forhold til andre programmeringsspråk. Funksjoner eksisterer , som enhver annen variabel eller systeminformasjon , i minnet og blir referert av adresse . Funksjoner , av seg selv, er bare blokker av kode i minnet som det refereres til . Eventuelle feil kastet av en funksjon henvisning kan være på grunn av en undeclared funksjon, eller en funksjon som heter feil. En buffer overflow feil ville mer sannsynlig kommer fra koden inne i funksjonen.
    Variabler og Memory

    C + + er statisk skrevet, noe som betyr at programmereren må angi en variabel typen når erklære en variabel. Dette skyldes at C + + setter av minneblokker i visse størrelser basert på den variable type. Et heltall ( int ) variabel deklarert i et program vil få en plass i minnet satt av spesielt for en int . Minnet blokken vil være den nøyaktige størrelsen på et heltall.

    Arrays

    Arrays er samlinger av variabler som inngår i ett navn . For eksempel skaper tabellen nedenfor en liste over 10 heltall , som kan nås ved å referere til en indeks ( navn [ 0 ] , navn [ 1 ] osv. )

    int navn [ 10 ];

    stedet for ett heltall , setter rekken av nok sammenhengende plass for 10 personer. Men fordi datatabellindekser tilgang kan bli forsøkt på verdier utover det som står i tabellen ( navn [ 11 ] , for eksempel) , kan det oppstå feil hvis programmereren ikke se hvordan hun bruker array.

    Buffer Overflow

    grunn av innholdet av matriser i C + + , kan en rekke inne i en funksjon bli offer for buffer overflow . Hvis en bruker skriver inn et tegn input større enn matrisen kan håndtere, vil de ekstra tegnene overskrive data i tilknytning til array i minnet. For eksempel , etter

    ugyldig eksempel ( ) {

    int login [ 15 ];

    int i = 0;

    while ( CIN >> en [ i] ) {

    i + +;

    }

    }

    "mens " loop aldri vil ende , og etter den tid "i" når 15 , vil brukeren begynner å legge inn data som overskriver minne. Dette kan ha utilsiktede konsekvenser , som for eksempel omdisponering av en lokal variabel , eller , i spesielle tilfeller , omskriving av funksjonspekere å referere annerledes, ondsinnet kode .

    früher :

     Weiter:
      Relatert Artike
    ·Hvordan skrive et enkelt program i C + + 
    ·Hvordan bruke en STL Vector iterator 
    ·Hvordan å kompilere CPP i MS - DOS 
    ·Sette inn en Array i det første elementet hjelp av C +…
    ·Hvordan lese SQL Fra Visual C 
    ·Programmer i C + + som vil reversere en setning 
    ·Lengde på String Uten bygd funksjon i C + + 
    ·Hvordan Lenke listen Input Stream på C + + 
    ·Hvordan lage en rad med stjerner i C + + 
    ·Hvordan lage Door I GtkRadiant 
      Anbefalte artikler
    ·Hvordan lage en DFD 
    ·Bruk av Collator i Java 
    ·GridView Funksjoner 
    ·Hvordan finne den Maximum Enum på VB 
    ·Hvordan bruke Rake Rails å oppdatere Prosjekter 
    ·Slik bruker du en PHP Header 
    ·Java String Lengde & Function 
    ·Hvordan bygge SaaS-applikasjoner 
    ·Hvordan laste opp PHP filer fra en URL 
    ·Hvordan sortere data i Visual Basic 
    Copyright ©  Datamaskin  http://www.datamaskin.biz/