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 :

Ecrire un fichier binaire avec des caractères


Sujet :

C

Vue hybride

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

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Par défaut Ecrire un fichier binaire avec des caractères
    Bonsoir,

    En C on peut faire un prog qui crée un fichier et qui écrit dedans avec la fonction fprintf. Je me demande s'il est possible d'écrire un prog qui crée un fichier .exe, autrement dit de "taper" une chaine de caractères "chaine" telle qu'avec la commande fprintf(fichier, "chaine") on écrirait un fichier .exe.

    Je ne sais pas si je suis clair...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Par défaut
    J'espère être plus clair, je me demande s'il est possible de taper au clavier une chaîne de caractères "bidule" telle que en compilant ce prog :

    int main(int argc, char *argv[])
    {
    FILE *lefichier=NULL;

    lefichier=fopen("lefichierexe.exe", "wb");

    fprintf(lefichier, "bidule");

    fclose(lefichier);

    system("PAUSE");
    return 0;
    }
    on obtiendrait le fichier lefichierexe.exe, qui serait "un vrai" fichier .exe ?

  3. #3
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par stokastik
    on obtiendrait le fichier lefichierexe.exe, qui serait "un vrai" fichier .exe ?
    Si tu sais quoi y mettre, bien sûr ! Mais dans la phrase précédente, savoir quoi mettre n'est pas généralement une chose facile...

    Jc

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par fearyourself
    Si tu sais quoi y mettre, bien sûr ! Mais dans la phrase précédente, savoir quoi mettre n'est pas généralement une chose facile...

    Jc
    Cela risque quand même d'être difficile avec fprintf() en sachant qu'un ".exe" (sous Windows [1], donc) contiendra au moins un octet à 0 (au moins un '\0')... Mais si tu sais faire, juste avec un `fprintf(lefichier, "bidule");', je veux bien voir

    @stokastik : essaye plutôt avec "fwrite()".



    [1] - ou ReactOS

  5. #5
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par David.Schris
    Cela risque quand même d'être difficile avec fprintf() en sachant qu'un ".exe" (sous Windows [1], donc) contiendra au moins un octet à 0 (au moins un '\0')... Mais si tu sais faire, juste avec un `fprintf(lefichier, "bidule");', je veux bien voir

    @stokastik : essaye plutôt avec "fwrite()".



    [1] - ou ReactOS
    Le bourrin en moi dira que c'est possible avec fprintf en faisant un %s et une chaîne de caractères qui sera bien initialisée.

    Par contre, fwrite est plus adapté, je te l'accorde

    Jc

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par fearyourself
    Le bourrin en moi dira que c'est possible avec fprintf en faisant un %s et une chaîne de caractères qui sera bien initialisée.

    Par contre, fwrite est plus adapté, je te l'accorde

    Jc
    Bonjour,

    Je suppose que tu penses à un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fprintf(lefichier,"%s","MZblabla\0blibli\0\x90\x90\x90\x90");
    ?? [1]

    Cordialement,
    DS.

    [1] - Je ne dirai rien concernant le fait que ce n'est pas de la forme `fprintf(lefichier, "bidule");'...

  7. #7
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Par défaut
    Citation Envoyé par stokastik
    on obtiendrait le fichier lefichierexe.exe, qui serait "un vrai" fichier .exe ?
    Les compilateurs sont la pour ça !!!
    Faire un fichier .exe est particulièrement difficile...
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 99
    Par défaut
    Eh bien mon topic a plus de succès que ce que je ne pensais

    Dans ma chaîne "bidule", je ne pourrais pas coller le contenu d'un fichier .exe à quelques modifications près ? C'est bien plus compliqué que ça ?

    (ToTo13, bien sûr on pourrait croire que ça ne sert à rien de créer un fichier .exe que j'ai déjà, mais ce prog permettrait de créer ce fichier chez quelqu'un d'autre)

  9. #9
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par stokastik
    Dans ma chaîne "bidule", je ne pourrais pas coller le contenu d'un fichier .exe à quelques modifications près ? C'est bien plus compliqué que ça ?
    Faire des "modifications près" directement dans le code machine, ce n'est pas aisée, voir "presque impossible" si tu ne veux pas changer juste une chaine de texte mais des instructions machines.

    Pour s'entrainer avant d'entamer l'assembleur, on avait bosser en codant directement en langage machine, mais il faut le manuel du processeur concernant toutes les intructions (et les équivalences en binaire), au bout de 3 instructions écrites, tu laisses tomber en général...

  10. #10
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par stokastik
    ce prog permettrait de créer ce fichier chez quelqu'un d'autre
    Allons bon.

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par DaZumba
    Citation Envoyé par stokastik
    ce prog permettrait de créer ce fichier chez quelqu'un d'autre
    Allons bon.
    Ah... Tu penses à la même chose que moi ?

  12. #12
    Membre expérimenté Avatar de Gamdwin
    Inscrit en
    Avril 2005
    Messages
    186
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 186
    Par défaut
    Citation Envoyé par stokastik
    (ToTo13, bien sûr on pourrait croire que ça ne sert à rien de créer un fichier .exe que j'ai déjà, mais ce prog permettrait de créer ce fichier chez quelqu'un d'autre)
    Quel intérêt ?
    Au pire, crée un script plutôt, beaucoup plus facile à gérer et à maintenir. Mais quoi qu'il arrive, je ne vois pas bien l'intérêt... tu as une idée précise à nous proposer ?

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

Discussions similaires

  1. [AC-2010] Comment lire (ReadLine) un fichier XML avec des caractères accentués
    Par JFDAccess dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/01/2015, 07h37
  2. Ecrire un fichier binaire avec AS3
    Par f56bre dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 16/12/2008, 19h49
  3. Ecrire un fichier .txt avec des retours chariot
    Par french-petzouille dans le forum Langage
    Réponses: 9
    Dernier message: 30/03/2007, 20h01
  4. ecrire un label avec des caractères unicode
    Par jamescook dans le forum C++Builder
    Réponses: 6
    Dernier message: 13/02/2007, 10h18
  5. Fichier de langue avec des caractères chinois
    Par marcootz dans le forum C++Builder
    Réponses: 4
    Dernier message: 11/01/2007, 18h54

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