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

Autres éditeurs Discussion :

[g++ ASM] Désassemblage de C++


Sujet :

Autres éditeurs

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut [g++ ASM] Désassemblage de C++
    Bonjour,

    Voilà j'écris en ce moment un programme en C++ et j'essaye de désassembler certaines parties pour bien vérifier que le code généré est suffisament simplifié (en fait j'utilise des templates C++ qui se simplifient à la compilation).

    Le compilateur utilisé est gcc, et j'utilise W32Disasm qui est me semble être un trés bon décompilateur.

    Pour trouver immédiatement la fonction qui m'intéresse dans Disasm, je rajoute une instruction C "printf("0xabcd0123\n");" qui à pour effet normalement d'être recherchable car j'ai normalement un bout de code ASM suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    push 0x.... # ici c'est une référence à la chaîne "0xabcd0123"
    call printf
    Tout fonctionne bien tant que le code compilé n'est que du C pur, mais dés que c'est du code C++, impossible de retrouver cette chaîne sous Disasm ...

    Une idée de piste à rechercher ?

  2. #2
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    Si tu utilise gcc (ou plutôt g++) pour la compil, tu peux peut-être utiliser objdump pour désassembler le code. Avec -g (à la compile), tu garde les infos de debug (i.e. les noms des fonctions, etc).
    Regarde les options de objdump, mais de mémoire, ça devrait être avec -D

    Sinon, essaie avec un autre chaine de caractère..

  3. #3
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Merci pour cette aide. Voilà une astuce que je ne connaissait pas.

    Entre temps j'ai réussi grace à 2 autres moyens :

    1. utiliser IDA comme remplacement de W32Disasm (les chaînes ont l'air d'être en UNICODE par défaut sous g++ / gcc, et W32Disasm n'aime pas trop ça)

    2. utiliser un inline asm, enrobé dans des goto C :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    asm (
      "mov $0xabcd0123, %eax"
    );
    Voilà pour ceux qui un jour se poserons aussi la question.

Discussions similaires

  1. Désassemblage à la main 16 bits / 32 bits
    Par le mage tophinus dans le forum Assembleur
    Réponses: 12
    Dernier message: 19/04/2003, 00h55
  2. Coloration syntaxique ASM dans un RichEdit
    Par Crick dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/12/2002, 01h53
  3. Allocation dynamique de mémoire en asm
    Par narmataru dans le forum Assembleur
    Réponses: 7
    Dernier message: 17/12/2002, 22h31
  4. Reboot en asm ou C++
    Par Juke dans le forum x86 16-bits
    Réponses: 6
    Dernier message: 17/10/2002, 09h11
  5. [TP]code asm dans une procedure
    Par M.Dlb dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 17/08/2002, 20h43

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