|  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> C /C + + -programmering >> Content

    Vilka nackdelar är det i Implicit Dereferencing av pekare

    ? Pekare avgöra vilken typ av objekt som ett program förutsätter är i en viss minnesplats . Pekare kan omvandlas till specifika heltal eller implicita referenser . Pekare kan referera till andra pekare och data arrayer . Implicit dereferencing av pekare introducerar risken för programfel och sårbarheter som inte förekommer när pekare uttryckligen definieras . Explicit Versus Implicit Pekare
    variabeln till höger är underförstått hänvisas till ekvationen till vänster .

    Explicit pekare omvandlingar ändra en pekare typ till en annan pekare typ . Ändra ett heltal eller byte till en pekare är också en uttalad konvertering . C + + gör det möjligt att implicit konvertering från en pekartyp att skriva void * . Null literals kan ha en implicit konvertering till någon pekartyp . Variabler på höger sida av ett uppdrag uttalande är underförstått dereferenced som de tar på värdet av de värden på den vänstra sidan av uppdraget uttalande . All dereferencing är implicit i Java .
    Dereferencing Operatörer

    C + + , måste pekare till eleverna att dereferenced inom ramen för en klass objekt . A . * Operatör dereferences en pekare till en ledamot med en klass objekt . En pil följt av en asterisk dereferences en pekare till ett element med en pekare till ett klassobjekt . Använda " * " indirection operatör i programmeringsspråket C kallas dereferencing en pekare . En pekare definieras med uttrycket ptr = variabel eller värde . En dereferenced pekare definieras med uttrycket * ptr = variabel eller värde .
    Fel

    Dereferencing en pekare kan resultera i ogiltiga värden om adressen refereras efter slutet av sin livslängd . När en pekare dereferenced , anropar programmet värdet refereras av pekaren . Null pekare har en standard 0x0 värde om statiska och oinitierad . Enligt " A Guide to Kernel Exploitation " av Enrico Perla , " Om en kernel väg försöker avreferera en NULL pekare , kommer det helt enkelt försöka att använda 0x0 minnesadress , vilket sannolikt kommer att resultera i ett panik tillstånd , eftersom ingenting mappas det . " pekaren måste definieras med hjälp av * ptr kommandot innan dereferenced pekare kan användas på andra ställen i ett C-program .

    Om * ptr inte tilldelas ett värde innan de refereras , kan programmet krascha . Pekare till data medlemmar kan resultera i en dålig dereference . Om pekaren inte ser upp värden från en array av klass objekt och kan inte bestämma värdet av variabeln , uppstår ett fel . " C + + Gotchas " av Stephen C. Dewhurst påstår att " en pekare till medlem hänvisar till en specifik medlem av ett ospecificerat objekt . " Den refererade objektet måste tillföras även för pekaren ska fungera korrekt .

    Sårbarheter

    Implicit dereferencing av en oinitierad pekare skapar en sårbarhet i programkod . Minnesfel korrumperar en pekare som blir dereferenced . Dereferencing en oinitierad pekare gör att programvaran för att referera till en minnesplats som inte är validerad . Utan kontroll av källa eller destination dereferenced pekare , kan hackare använda denna sårbarhet för att passera en kärna adress till programvaran kärnan och modifiera dess minne med deras önskade egna värderingar i stället för användarens data .


    Tidigare:

    nästa:
    relaterade artiklar
    ·Hur man använder en GDB Simulator
    ·Hur du programmera Cocoa på en iPhone
    ·Hur man skapar en vektor av tecken arrayer i C + +
    ·Lägga Två stora heltal i C + +
    ·Hur man använder Ogre Vector3 Operator
    ·Hur konvertera en sträng till ett diagram i C + +
    ·Lägga till en rad i DataGridView
    ·Hur Pass ett Container Vector till en funktion
    ·Hur man bygger en spelmotor From Scratch
    ·Definition av ett upphöjningskort
    Utvalda artiklarna
    ·Komma åt flera databaser i ett PL /SQL Query
    ·Vad är en gles Array i MATLAB
    ·Hur man utarbeta ett program med romerska siffror
    ·Hur får tangenttryckningar i C + +
    ·. Hur man uppgraderar en väg från VB6 till Net
    ·Hur du formaterar tal i decimaler i Java
    ·Hur man läser PHP Framställningar och respons i ASP.N…
    ·Hur man gör AJAX med PHP och HTML
    ·Hur man skriver ut Enum Värden i C
    ·Hur du ändrar ett rutnät
    Copyright © Dator Kunskap http://www.dator.xyz