? Pointeurs de déterminer le type d'objet d'un programme de logiciel suppose est dans un emplacement mémoire spécifique . Les pointeurs peuvent être convertis en nombres entiers spécifiques ou des références implicites. Les pointeurs peuvent référencer d'autres pointeurs et des ensembles de données. Déréférencement de pointeurs implicite introduit le risque d'erreurs logicielles et des vulnérabilités qui ne se produisent lorsque les pointeurs sont explicitement définies. Pointeurs explicites Versus implicite La variable sur la droite est implicitement fait référence à l'équation sur la gauche. conversions de pointeurs explicites changer un type de pointeur à un autre type de pointeur . Modification d'un nombre entier ou byte à un pointeur est également une conversion explicite . C + + permet la conversion implicite d'un type de pointeur type void * . Littéraux Null peuvent avoir une conversion implicite pour n'importe quel type de pointeur. Variables sur le côté droit d'une instruction d'affectation sont implicitement déréférencé comme ils prennent de la valeur des valeurs sur le côté gauche de l'instruction d'affectation . Tous déréférencement est implicite dans Java. Déréférencer opérateurs En C + + , des pointeurs vers les membres du groupe doivent être déréférencé dans le contexte d'un objet de classe . A. * Opérateur déréférence un pointeur vers un membre d'un objet de classe . Une flèche suivie d'un astérisque déréférence un pointeur vers un membre avec un pointeur vers un objet de classe . Utilisation de l' opérateur d'indirection de " *" dans le langage de programmation C est appelée déréférencement d'un pointeur. Un pointeur est définie en utilisant l'expression ptr = variable ou valeur . Un pointeur déréférencé est définie en utilisant l'expression * ptr = variable ou valeur . Erreurs déréférencement d'un pointeur peut conduire à des valeurs non valides si l'adresse est référencée après la fin de sa durée de vie . Quand un pointeur est déréférencé , le programme appelle la valeur référencée par le pointeur . Pointeurs nuls ont une valeur par défaut si 0x0 statique et non initialisée. Selon le « Guide de l' Exploitation de Kernel " par Enrico Perla, " Si le chemin du noyau tente de déréférencer un pointeur NULL, il va simplement essayer d'utiliser l'adresse 0x0 de mémoire , ce qui entraînera probablement dans un état de panique , puisque rien n'est mappé il . " le pointeur doit être définie en utilisant la commande * ptr avant que le pointeur déréférencé peut être utilisé ailleurs dans un programme C . Si l' * ptr n'est pas attribué une valeur avant d'être référencé , le programme peut se bloquer. Les pointeurs vers les membres de données peut entraîner une mauvaise déréférencer . Si le pointeur ne cherche pas des valeurs à partir d'un tableau d'objets de classe et ne peut pas déterminer la valeur de la variable, une erreur se produit . " C + + Trucs et astuces " de Stephen C. Dewhurst stipule que « un pointeur vers un membre désigne un membre spécifique d'un objet quelconque . " L' objet référencé doit être alimenté aussi bien pour le pointeur de travailler correctement . < Br > vulnérabilités déréférencement implicite d'un pointeur non initialisé crée une vulnérabilité du code logiciel . Corruption de mémoire corrompt un pointeur qui devient déréférencé . Déréférencer un pointeur non initialisé provoque le logiciel pour faire référence à un emplacement de mémoire qui n'est pas validé . Sans contrôle de la source ou la destination du pointeur déréférencé , les pirates peuvent utiliser cette vulnérabilité pour passer d'une adresse du noyau pour le noyau du logiciel et modifier sa mémoire avec leurs propres valeurs souhaitées à la place des données de l'utilisateur . < Br >
|