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 :

Pointeur de fonction


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 528
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 528
    Par défaut
    Citation Envoyé par Skyrunner
    @Mat.M
    Arf c'est fait pour fonctionner sous Linux, désolé.
    Oui...mais le code a été modifié depuis et avec un typedef cela peut passer effectivement.
    Je vais essayer sous VC+

    Citation Envoyé par Emmanuel Delahaye
    C'est du C alors extension.c et non .cpp please... Tu te trompes de compilateur...
    Oui mais je ne sais pas si cela a vraiment une incidence.
    Je vais essayer tout de même

  2. #2
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 22
    Par défaut
    > Y'a du boulot...
    C et C++ sont 2 langages différents. <iostream>, c'est pas du C.

    Ha ca j'ai jamais di le contraire. J'ai jamais vraiment eu l'occasion de me mettre au C. J'ai des connaissances dans d'autres domaines mais je prétend pas en avoir en C. Du moins très très vaguement.

    > C'est stupide comme code tu essaie de faire pointer un traitement informatique vers des données !
    C'est digne de la taverne !
    Un conseil : achetes un bon livre sur l'assembleur x86 tu pigeras sans doute mieux.

    Bon doucement stp. Non j'essaye pas juste de faire pointer un traitement informatique vers des données, j'essaye de les faire pointer vers des instructions machines. Et si tu veux savoir, ce morceau de code provient déjà d'un livre. Et ici mon problème vient pas de la compréhension de l'interprétation côté machine, mais plutôt du bidouillage en C. Pour ca que j'ai posté dans un forum traitant du C...

    Sinon merci pour toutes vos réponses, j'en attendais pas autant.
    Aussi le (void (*)(void))&shellcode permet d'éviter les erreurs à la compilation mais en vérifiant bien j'obtiens &opcode != &shellcode. En clair, rien ne bouge.
    Enfin bon, jvoulais juste faire mes ptites bidouilles en C parceque c'est toujours plus sympa à faire qu'en ASM. Ce qui m'agace c'est que j'ai simplement repris le code d'un bouquin, et de plus, lorsque j'ai fais mes ptites recherches sur les pointeurs de fonctions, le code était semblable. Alors pourquoi tout déconne ? aucune idée.

    Aussi je reprécise que ce bout de code n'est pas fait pour être beau/efficace. Je simule manuellement le déroulement d'un buffer overflow pour étudier le sujet.

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    mais en vérifiant bien j'obtiens &opcode != &shellcode
    Normal, c'est opcode tout court qui doit être égal à &shellcode...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 22
    Par défaut
    > Normal, c'est opcode tout court qui doit être égal à &shellcode...

    Heuu opcode il va bien retourner le résultat de la fonction ? C'est pas le retour qui doit être égale à &shellcode ici, mais plutot l'adresse vers laquelle opcode pointe, no ?

    Enfin bref, opcode = (void (*)(void))(&shellcode); ne fait rien et tout ca continue à m'agacer. Jdirais bien, "pff jvais rester au développement web moi", mais ca serait trop facil. Tantôt le code fonctionne sur dev-cpp, tantot c'est sur visual c++, j'ai beau reprendre les codes des bouquins ou de site ayant l'air sérieu, ca ne fonctionne pas, et la total, maintenant j'ai cette erreur "'cout' : identificateur non déclaré" sur visual c++. Si je peux même plus faire un cout...

    Je sais que je vais en exaspérer certains avec mon inexpérience mais je vous rassure je m'en doute déjà. M'enfin faut avouer qu'à chaque approche, jressort un peu dégouté du C et de ses règles qui s'appliquent un peu quand elles veulent.
    Breff zut, y a bien moyen de faire pointer une fonction vers une adresse mémoire bien précise ? Je l'aurais et c'est comme ca que j'apprendrais .... :/

  5. #5
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Par défaut
    rapport au code d'origine, j'aurais effectué une légère correction du type :

    (char *)opcode = &shellcode[0];

    Avec tous les risques que cela comporte, c'est à dire que "shellcode" ne soit pas bien aligné en mémoire !


Discussions similaires

  1. opengl et pointeur de fonction
    Par Oldhar dans le forum C
    Réponses: 5
    Dernier message: 06/11/2003, 23h56
  2. Declaration de fonction retournant un pointeur sur fonction
    Par pseudokifaitladifférence dans le forum C
    Réponses: 5
    Dernier message: 11/08/2003, 19h37
  3. Matrice de pointeurs de fonctions
    Par sebduth dans le forum C
    Réponses: 15
    Dernier message: 18/07/2003, 14h03
  4. [Kylix] Pointeur de fonctions
    Par _dack_ dans le forum EDI
    Réponses: 1
    Dernier message: 03/07/2003, 10h17
  5. pointeur de fonction
    Par kardath dans le forum C
    Réponses: 4
    Dernier message: 28/12/2002, 14h39

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