IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

Ai je bien compris cette sequence (techniques de hacking p°40)?


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2011
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 61
    Points : 65
    Points
    65
    Par défaut Ai je bien compris cette sequence (techniques de hacking p°40)?
    Bonjour,
    Voilà j'ai acquis technique de hacking et il y a un bout de code que je ne suis pas trop sûr de moi....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lea     eax,[ebp-4]
    inc     DWORD PTR [eax]
    ça veut dire en (français)

    1. met dans le registre eax l'adresse de ebp-4
    2. incrémente la valeur de l'adresse contenu dans le registre eax de 1.

    Si ce n'est pas ça merci de me corriger..
    Si ça veut bien dire ça pourquoi ne pas écrire
    car on peut incrémenter une mémoire...

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 40
    Points : 63
    Points
    63
    Par défaut
    Cela dépend du compilateur mais en théorie ton instruction ne fonctionnera pas.
    Un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INC DWORD PTR SS:[EBP-4]
    fonctionnera mieux a la compilation
    Bros

  3. #3
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2011
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 61
    Points : 65
    Points
    65
    Par défaut
    d'accord mais le bout de code ça veut dire ce que j'ai dit ?
    (c'est en desassemblant un programme C sur une architecture x86, donc ça existe c pas inventer)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lea     eax,[ebp-4] 
    inc     DWORD PTR [eax]
    ça veut dire en (français)

    1. met dans le registre eax l'adresse de ebp-4
    2. incrémente la valeur de l'adresse contenu dans le registre eax de 1.

    Merci

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 369
    Points : 23 623
    Points
    23 623
    Par défaut
    Hello,

    Citation Envoyé par Spirale21 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lea     eax,[ebp-4] 
    inc     DWORD PTR [eax]
    ça veut dire en (français)

    1. met dans le registre eax l'adresse de ebp-4
    2. incrémente la valeur de l'adresse contenu dans le registre eax de 1.

    Merci
    Pas tout-à-fait. Sur la première ligne, EBP n'a pas d'adresse puisque c'est un registre du processeur. L'instruction va mettre dans EAX l'adresse de l'octet pointé par EBP retranchée de 4 octets, soit l'équivalent de « MOV EAX,EBP ; SUB EAX,4 ».

    LEA signifie Load Effective Address et permet de charger dans un registre l'adresse calculée par la circuiterie des modes d'adressages plutôt que ce qui se trouve à cette adresse. C'est une instruction que l'on retrouve sur la plupart des familles de micro-processeurs, à part les RISC vraiment restreints. On les trouvait déjà sur certains 8 bits célèbres, dont les Motorola.

    C'est utile pour savoir où l'on pointe, bien sûr et faire des indirections en cascade. Mais il faut se souvenir que c'est parfois le seul moyen de charger les registres d'index, quand ceux-ci ont un format différent des registres dédiés au calcul, spécialement sur des architectures Harvard. C'est aussi pour cela que les i386 et supérieurs ne sont pas super-intéressants pour apprendre l'assembleur. Tout est trop unifié, trop puissant, et les registres d'usage général, bien que très pratiques, finissent par rendre obscure l'utilité de cette instruction.

    Toujours est-il qu'en effectuant un calcul d'adresse (base + offset + multiplicateur éventuel) plutôt qu'un authentique calcul utilisant l'ALU, on ramène le tout à une seule instruction au lieu de deux, on fait tenir le tout directement dans le code opération, on économise un accès bus et on évite de mobiliser l'unité de calcul. Donc un gain substantiel tant en nombres de cycles qu'en mémoire, et des effets bénéfiques sur les architectures superscalaires.


    Sur la deuxième ligne, on incrémente la valeur contenue en mémoire à l'adresse indiquée par le contenu de EAX, mais pas le contenu de EAX lui-même. C'était probablement ce que tu voulais dire. Cela dit, comme le x86 gère plusieurs formats de données (8, 16 ou 32 bits, et maintenant 64), il faut lui préciser explicitement ce que l'on pointe avec DWORD PTR.

Discussions similaires

  1. Debutant , j'ai pas compris cette erreur
    Par StyleXP dans le forum Langage
    Réponses: 11
    Dernier message: 05/09/2006, 20h45
  2. Ai-je bien compris les possibilités de C#?
    Par berceker united dans le forum Windows Forms
    Réponses: 6
    Dernier message: 29/08/2006, 10h15
  3. Réponses: 7
    Dernier message: 14/08/2006, 09h18
  4. [Hibernate] Est ce que j'ai bien compris?
    Par questionneuse dans le forum Hibernate
    Réponses: 17
    Dernier message: 07/01/2006, 16h38
  5. [THREAD][DAEMON]Pas bien compris....
    Par XristofGreek dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 24/09/2004, 13h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo