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 :

instruction db, que fait-elle exactement ?


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 274
    Points : 176
    Points
    176
    Par défaut instruction db, que fait-elle exactement ?
    Bonjour à tous,

    je viens de lire le précédent sujet qui était très intéressant sur l'apprentissage de l'assembleur. Comme je débute moi aussi, parce que cela est indispensable dans l'écriture de shellcode, je voudrais vous poser une question. Je lis en ce moment l'excellent site de hacking http://www.bases-hacking.org. Je m'entraîne sur des wargame, pour l'instant assez simples. A cet endroit http://www.bases-hacking.org/shellcode.html, après relecture et application, je me suis posé une question, parce que cela n'est pas expliqué et que je ne m'étais pas aperçu de l'aspect tendancieux des lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    chaine:  ;label chaine où on arrive après le jump
       call retour  ;On retourne au label retour en mettant l'adresse de la prochaine instruction (cheminshell) dans la pile
       cheminshell db "/bin/sh0aaaabbbb"
    Ainsi, dans eip, on place l'adresse de ce que sera celle de la chaîne "/bin/sh0aaaabbbb". Sauf que, et c'est là que ça me turlupine, le processeur va d'abord exécuter le call, sans jamais exécuter le db, juste en plaçant l'adresse de l'instruction en haut de la pile. Du coup, si dans retour on veut utiliser la chaîne, elle n'est pas encore en mémoire, si ?
    A moins que db "/bin/sh0aaaabbbb" ne soit pas réellement une instruction, enfin c'est très flou pour moi !

    Pouvez-vous m'éclairer ?
    Merci d'avance !

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 217
    Points : 10 152
    Points
    10 152
    Par défaut
    Tout simplement que db n'est pas une instruction, cela signifie seulement que ça écrit en octet.

    Du coup, si dans retour on veut utiliser la chaîne, elle n'est pas encore en mémoire, si
    On écrivant db tu ne met rien en mémoire tu écrit juste dans la ROM (enfin ici dans ton exécutable), c'est mov qui permet d'écrire en mémoire.

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 378
    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 378
    Points : 23 670
    Points
    23 670
    Par défaut
    Bonjour,

    « db » signifie « Data Byte », et sert à insérer un ou plusieurs octets de données à l'endroit où on les rencontre, au sein du flot d'instructions compilées. On trouve cette même instruction déclinée en différents formats comme « dw », « dd » et « dq » pour respectivement « Data Word » (16 bits), « Data Double Word » (32 bits) et « Data Quad Word » (64 bits). C'est flagrant quand on examine le produit d'une compilation :

    Code asm : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    00000000 66 B8 78 56 34 12                    mov     eax,12345678h
    00000006 CD 80                                int     80h
     
    00000008 45                                   db      45h
     
    00000009 66 BB 08 00 00 80                    mov     ebx,80000008h
    0000000F 66 89 D8                             mov     eax,ebx

    On voit bien qu'à la ligne 4, l'assembleur a directement inséré la valeur indiquée par db plutôt qu'essayer de l'interpréter. Comme il s'agit d'une pseudo-instruction servant à insérer des données, il existe plusieurs manières de les exprimer, notamment sous forme de chaîne de caractères quand c'est à cela qu'elles correspondent.

    Il est relativement fréquent de voir ces données déposées immédiatement avant ou après le code, sans séparation plus nette, quand code et données partagent le même segment mais dans l'exemple concerné (à la limite de la légalité), l'auteur effectue un call sans avoir l'intention de revenir (heureusement parce que cela planterait). En réalité, le sous-programme appelé va dépiler l'adresse de retour et donc obtenir automatiquement l'adresse de la chaîne en question, ce qui lui permet d'éviter avoir à la déterminer à l'avance.

    (Edit: crosspost)

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 274
    Points : 176
    Points
    176
    Par défaut
    Merci beaucoup !
    Donc si je comprends bien, si on écrit db (des instructions classiques en hexa), le programme exécutera les instructions en question (ce qui explique comme tu dis que dans l'exemple présenté ça planterait si on exécutait le code après le retour vu qu'on met une chaîne de caractères quelconque).
    Par contre je ne comprends pas le sens que tu donnes de
    (à la limite de la légalité)
    Pourrais-tu préciser ?

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 504
    Points : 43 349
    Points
    43 349
    Par défaut
    (à la limite de la légalité)
    Pourrais-tu préciser ?
    ben tout simplement faire du hacking c'est illégal.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 274
    Points : 176
    Points
    176
    Par défaut
    Je suis d'accord lorsqu'on fait cela sur un matériel extérieur, mais lorsqu'on est explicitement autorisé à le faire sur un site comme sur newbiecontest avec ses wargame, je ne vois pas ce qu'il y a de malhonnête. Même concernant la démarche, si personne ne s'était penché là dessus on n'aurait pas tant progressé sur la sécurité informatique. Après c'est l'éternel débat, tout interdire pour éviter les dérives, ou permettre une riposte permanente contre des failles utilisées malhonnêtement ou non. Personnellement, ce domaine m'intéresse beaucoup, et je suis dans une école qui me permettra d'approfondir cela.
    En tout cas, tu as sans doute raison concernant la légalité, je ne connais absolument pas les lois qui régissent le hacking, mais je me doute que dès qu'on utilise un matériel extérieur sans autorisation, on est dans l'illégalité. Maintenant l'auteur du site exécutait son shellcode en local, même si je ne suis pas candide au point de penser qu'il n'a jamais utilisé que des ressources locales.

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 378
    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 378
    Points : 23 670
    Points
    23 670
    Par défaut
    C'est-à-dire qu'un certain nombre de lois ont été votées en France depuis les années 2000 jusqu'à aujourd'hui, et même si certaines l'ont été un peu trop rapidement à mon goût, on reste tenu de les respecter. Les éditeurs de sites web, à commencer par le nôtre, ont également l'obligation de veiller au grain.

    Parmi les mesures qui ont été très controversées, il y a notamment l'interdiction de contourner un « moyen technique de protection », ou de mettre directement ou indirectement à disposition du public un dispositif permettant de le faire. Ce texte devait en fait poser les fondements de l'usage à grande échelle des DRM. Seulement, écrit de cette façon, il établit que ce n'est pas l'accès frauduleux à un contenu protégé qu'il sanctionne, mais le fait en soi de neutraliser le dispositif même s'il n'y a rien derrière.

    C'est ce qui c'est passé entre autres avec DeCSS, pour lequel son auteur avait été inculpé puis blanchi, et qui permettait de décoder n'importe quel DVD vidéo puisque la clé avait été récemment cassée. Un utilisateur qui se servait de ce logiciel pour lire un DVD qu'il avait acheté légalement, dans le commerce, et jouir de son bien en utilisant un lecteur PC tout-à-fait conventionnel depuis un système d'exploitation sur lequel aucun logiciel « titulaire » d'une licence n'était disponible était quand même dans l'illégalité. Le plus absurde, c'est qu'il l'était devant la loi française et donc pénalement responsable, mais pas spécialement envers l'éditeur du DVD ni le consortium.

    Tout ceci pour dire, donc, que même en toute bonne foi, il est possible de tomber sous le coup de tels textes et que le cas échéant, les messages devront au minimum être modérés.

  8. #8
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 274
    Points : 176
    Points
    176
    Par défaut
    Ok, ça me paraît assez absurde en effet.
    Ne pensez-vous pas que cela décourage les gens de fouiller et d'essayer de comprendre un fonctionnement fin pour permettre une protection plus poussée, alors que le cybercrime n'en n'a de toute façon que faire ?

  9. #9
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 378
    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 378
    Points : 23 670
    Points
    23 670
    Par défaut
    La modération se doit d'être aussi neutre que possible et il ne nous appartient pas de commenter le bien fondé ou non d'une loi en vigueur. Par ailleurs, nous essayons d'éviter tout débat politique sur nos forums, sauf dans celui qui est consacré à cela. Ceci dit :

    Citation Envoyé par Lintel-oo Voir le message
    Ne pensez-vous pas que cela décourage les gens de fouiller et d'essayer de comprendre un fonctionnement fin pour permettre une protection plus poussée ?
    C'est un but avoué par certaines personnes. Quoi qu'il en soit, les lois les plus médiatisées en la matière (outre Création et Internet, instaurant la Hadopi) ont été la LCEN, DADVSI et LOPPSI 2. Voir à ce sujet :

    http://juriscom.net/2007/01/premier-...la-loi-dadvsi/
    http://www.legifrance.gouv.fr/affich...nbResultRech=1

    Et également :

    https://fr.wikipedia.org/wiki/R%C3%A9troing%C3%A9nierie

  10. #10
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 274
    Points : 176
    Points
    176
    Par défaut
    Merci pour les liens, oui je comprends qu'un débat politique n'a rien à faire ici.
    Je peux donc clore le sujet, ma question étant traitée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/08/2007, 17h30
  2. Réponses: 1
    Dernier message: 19/03/2007, 22h15
  3. [Tableaux] Mais que fait cette condition exactement?
    Par pierrot10 dans le forum Langage
    Réponses: 5
    Dernier message: 21/09/2006, 12h36
  4. STL: les map et la methode find. que fait-elle?
    Par cokmes dans le forum SL & STL
    Réponses: 6
    Dernier message: 07/11/2005, 08h31
  5. Qu'est-ce que c'est que Nessus, ça fait quoi exactement ?
    Par PeterT dans le forum Développement
    Réponses: 3
    Dernier message: 24/07/2002, 11h23

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