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

C++ Discussion :

executer une chaine char avec asm() [prob]


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 131
    Par défaut executer une chaine char avec asm() [prob]
    salut à tous

    compileur : mingw
    os : winxp pro

    j'ai un probleme bizarre pour lancer une commande asm

    je vais rechercher une reference pour la passer en parametre à une commande jmp

    si je l'écris à la main ça fonctionne correctement
    asm("jmp 0x22ff10");
    si je la construit ça me fait une erreur :
    stub.cpp:173: error: expected asm body before "asm_command"
    stub.cpp:173: error: expected `;' before ')' token
    stub.cpp:173: warning: statement has no effect
    la construction :

    char data_pValue[50] = { 0 };
    char asm_command[255]={0};
    strcat(asm_command,"\42");
    strcat(asm_command,"jmp ");
    sprintf(data_pValue, "%#x",(unsigned int)&data[0]);
    strcat(asm_command,data_pValue);
    strcat(asm_command, "\042 \0");
    asm(asm_command);
    un
    cout<<asm_command<<"\n";
    me renvoie bien ("jmp 0x22ff10");

    mais
    asm(asm_command);
    ne fonctionne pas, j'ai bidouillé asm_command dans tous les sens (enlevé les doubles quotes, etc..)

    mais sans succes

    quelqu'un aurait-il une idée ?

    rogerio

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Le code ASM est compilé et intégré à ton exécutable, il n'est pas interprété magiquement à la volée. Donc pour ça, je ne pense pas que tu puisses passer de chaîne non connue à la compilation à la directive asm.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 131
    Par défaut lol
    lol

    salut laurent

    ce que tu dis me parait logique, je n'y avais pas pensé, ça complique mon projet à la limite de l'infaisabilité


    donc faudrait que asm aille chercher l'adresse mémoire pour faire le jmp ?

    rogerio

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    Si tu connais l'adresse pourquoi ne pas la passer directement ?
    Un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void f()
    {
      long address = ... ;
      __asm__(
        "jmp %0"
          : "r"(address)
      );
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 131
    Par défaut désolé
    désolé voidseer mais ça marche pas non plus

    je vais étudier le probleme differemment

    rogerio

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    Citation Envoyé par rogerio
    désolé voidseer mais ça marche pas non plus
    Qu'est-ce ce qui ne marche pas exactement ?

Discussions similaires

  1. Executer une chaine concatener dans une procedure stockée
    Par nic413 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 19/06/2006, 10h24
  2. ecrire une chaine dans un fichier [prob]
    Par rogerio dans le forum C++
    Réponses: 5
    Dernier message: 31/05/2006, 02h20
  3. executer une chaine binaire executable
    Par rogerio dans le forum C++
    Réponses: 22
    Dernier message: 03/05/2006, 17h51
  4. [BDD] Comment Executer Une SP Mysql avec ADODB depuis PHP
    Par audreyc dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 30/03/2006, 12h17
  5. [API][Système] Executer une commande dos avec arguments
    Par oOoOuuhmAn dans le forum Général Java
    Réponses: 4
    Dernier message: 17/03/2006, 12h37

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