HEXA en C

Résolu
cs_COLLECTION Messages postés 20 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 8 mai 2007 - 27 nov. 2006 à 17:03
cs_COLLECTION Messages postés 20 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 8 mai 2007 - 28 nov. 2006 à 00:25
Bonjour
je voudrais creer un éditeur hexadecimal en mode console :

mais je n'arrive pas a avoir un code me permettant d'ouvrir un executable windows
exemple = j'amerais avoir le code hexadecimal du bloc note windows comme le ferait n'importe quel autre éditeur hexa
et le copier en entier dans un fichier texte.

tous mes essais on etaient nuls

si une personne pourrai me donner un morceau de code C le plus simple possible

 merci

8 réponses

deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
27 nov. 2006 à 17:34
pour cela, met le contenut du fichier en mémoire et affiche le en hexa, il y à un format déjà crée pour cela , a savoir %x (minuscule) %X (majuscule).

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
27 nov. 2006 à 23:42
Voici quelque chose. C'est pas très propre mais ça fonctionne:

#include
#include<stdlib.h>

int  main(void)
{
    FILE *rfile, *wfile;
    BYTE *buffer;
    char *towrite, *c, *d;
    int len, count;

    rfile = fopen("c:\\test.exe", "rb"); if(!rfile) return 0;
    len _lseek(rfile->_file, 0, SEEK_END); count len;

    buffer = (BYTE*)malloc(len); if(!buffer) goto exitCLOSERFILE;
    towrite = (char*)malloc(len*3); if(!towrite) goto exitFREEBUFFER;
    d buffer; c towrite;

    _lseek(rfile->_file, 0, SEEK_SET);
    if(fread(buffer, 1, len, rfile) != len) goto exitFREEALLBUF;

    while(count > 0)
    {
        char tmp[9];

        itoa((int)*d, tmp, 16);

        if(tmp[1] == 0)
        {
            tmp[1] = tmp[0];
            tmp[0] = '0';
        }
        *c tmp[0]; *(c+1) tmp[1];
        *(c+2) = ' ';
        count--; d++; c+=3;
    }

    wfile = fopen("c:\\test.txt", "w"); if(!wfile) goto exitFREEALLBUF;
    fwrite(towrite, 1, len*3, wfile);
    fclose(wfile);

exitFREEALLBUF:
    free(towrite);
exitFREEBUFFER:
    free(buffer);
exitCLOSERFILE:
    fclose(rfile);

    system("pause");
    return 0;
}

C++ (@++)<!--
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
28 nov. 2006 à 00:12
J'ai oublié d'ajouter #include <stdio.h> et #include <windows.h>

C++ (@++)<!--
3
cs_COLLECTION Messages postés 20 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 8 mai 2007
27 nov. 2006 à 17:44
merci pour ton aide
mais comment mettre le contenu en memoire de l'exe
quel fonction (fgetc , scanf ...)
ouverture du fichier (r + b ; rb ...)
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_COLLECTION Messages postés 20 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 8 mai 2007
27 nov. 2006 à 20:26
voici mon code :

#include <conio.h>
#include <dos.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

main()
{
FILE * fichier ;
FILE * fichier2;
char C;

fichier = fopen("art.exe","rb");
fichier2 = fopen ("hexa.txt","w");
do
{
C = fgetc(fichier);

fprintf(fichier2,(" %02X "),C);

}while ( C != EOF) ;

fclose (fichier2);
fclose (fichier);

return 0;
}

le resultat obtenu est : 4D 5A FF90 00 03 00 00 00 04 00 00 00 FFFF

je ne comprends pas d'ou vient le probleme
0
cs_COLLECTION Messages postés 20 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 8 mai 2007
28 nov. 2006 à 00:09
MERCI pour ce code mais mon compilateur ne le compile pas il me dit qu'il y a des erreurs avec quel compilateur l'as-tu compiler
0
cs_COLLECTION Messages postés 20 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 8 mai 2007
28 nov. 2006 à 00:09
MERCI pour ce code mais mon compilateur ne le compile pas il me dit qu'il y a des erreurs avec quel compilateur l'as-tu compiler
0
cs_COLLECTION Messages postés 20 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 8 mai 2007
28 nov. 2006 à 00:25
MERCI SUPER CA MARCHE
0
Rejoignez-nous