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 :

parser un pointer [0x22ff14]


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 parser un pointer [0x22ff14]
    voila

    je voudrai lancer des commandes asm

    le probleme c'est que je n'arrive pas à les passer en parametres

    char asm_command[255];
    strcat(asm_command,"jmp ");
    strcat(asm_command, "\042");
    strcat(asm_command, &data[0]); // le probleme est ici
    strcat(asm_command, "\042");
    asm(asm_command);

    existe-t'il un moyen de recuperer &data[0] pour le parser et integrer le pointeur dans asm command ?

    sinon je vais creuser pour essayer de lui assigner une adresse custom

    rogerio

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char asm_command[255]={0};

  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 nop
    nop

    je te remercie seriousme mais ça ne marche pas

    le probleme n'est pas dans l'initialisation de la variable asm_command

    je ne peux pas faire de strcat avec un pointeur memoire

    pack.cpp:157: error: cannot convert `char (*)[((unsigned int)((int)char_size))]' to `const char*' for argument `2' to `char* strcat(char*, const char*)'

    un cout &data[0] me retourne une adresse du type 0x22ff14 sauf que c'est jamais la même
    lol

    y aurait-il un moyen de traiter 0x22ff14 comme une string/char ?
    ou
    y aurait-il un moyen d'assigner une adresse mémoire à data[0] avant de le renseigner ?

    rogerio

  4. #4
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    "data" est un tableau de quoi?

  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 lol
    data e un tableau de char

  6. #6
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strncat(asm_command, data,1)
    car "strcat" concatène 2 chaines de caractères représentées par un pointeur sur leur premier élément.
    "strncat" permet d'indiquer le nombre de cractères à concaténer.

  7. #7
    Membre chevronné
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Par défaut
    Hello,

    Citation Envoyé par rogerio
    voila

    je voudrai lancer des commandes asm

    le probleme c'est que je n'arrive pas à les passer en parametres

    char asm_command[255];
    strcat(asm_command,"jmp ");
    strcat(asm_command, "\042");
    strcat(asm_command, &data[0]); // le probleme est ici
    Oui, et, c'est quoi data ? Et &data[0] ? Si data est une chaine C, tu vas juste recuperer l'adresse du premier element du tableau (ou pointeur dynamiquement alloué), ce qui est équivalent à strcat(asm_command, data);

    Je comprend que c'est la valeur de data et non ce qui est pointé que tu veux récupérer sous forme de chaine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    char asm_command[255] = { 0 };
    char data_pValue[50] = { 0 };
     
    strcat(asm_command,"jmp ");
    /* ! Implementation defined conversion ! from pointer to char to unsigned int */
    /* sprintf(data_pValue, "\"%#016x\"", (unsigned int)data);
    OU */
    /* ! Implementation defined formatting of pointer to void*/
    sprintf(data_pValue, "\"%p\"", (void*)data);
     
    strcat(asm_command, data_pValue);
    asm(asm_command);
    Citation Envoyé par rogerio

    existe-t'il un moyen de recuperer &data[0] pour le parser et integrer le pointeur dans asm command ?

    sinon je vais creuser pour essayer de lui assigner une adresse custom

    rogerio
    Oui, s(n)printf() est fait pour. Ceci dit, apres, c'est dépendant de ton implémentation pour savoir ce que tu peux faire de façon sûre comme conversion. Et puis c'est le forum C++ ici, il y a la classe std::ostreamstring qui peut faire ce travail de façon bien plus agréable.

    A+

  8. #8
    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 cool
    Foobar1329

    effectivement sprintf correspond

    char data_pValue[50] = { 0 };
    char asm_command[255];
    strcat(asm_command,"\42");
    strcat(asm_command,"jmp ");
    // la syntaxe qui me renvoie exactement la valeur de la référence
    sprintf(data_pValue, "%#x",(unsigned int)&data[0]);
    strcat(asm_command,data_pValue);
    strcat(asm_command, "\042");

    // verification
    cout<<&data[0]<<"\n";
    cout<<data_pValue<<"\n";
    cout<<asm_command<<"\n";

    // outpout renvoyé
    0x22ff10
    0x22ff10
    "jmp 0x22ff10"

    nickel merci à tous

    rogerio

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

Discussions similaires

  1. [JAXP] com.sun.xml.parser.ValidatingParser
    Par yolepro dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 05/11/2008, 15h36
  2. Parser XML
    Par miloux32 dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 18/07/2003, 03h17
  3. Réponses: 5
    Dernier message: 05/07/2003, 11h52
  4. [langage] Continuer a parser une ligne
    Par D[r]eadLock dans le forum Langage
    Réponses: 5
    Dernier message: 30/09/2002, 18h49
  5. [Pointer]Treeview.Data
    Par rbag dans le forum Composants VCL
    Réponses: 7
    Dernier message: 31/08/2002, 01h44

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