Mettre un fichier .exe dans un buffer

guiguikun Messages postés 92 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 1 octobre 2003 - 25 juil. 2003 à 22:59
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 26 juil. 2003 à 15:49
Je n'arrive pas a mettre un fichier executable en memoire.
sur les 100Ko du fichier, mon buffer ne compte que les 3 premiers octets (caracteres)

voici mon code :

ifstream fichier(file_path,ios::in|ios::binary);
if (fichier.is_open()) {
unsigned long file_size = get_file_size(file_path);
char *buffer = new char [file_size + 1];
if (!buffer) { exit(0); }
fichier.read(buffer,file_size);
cout<<strlen(buffer)<<" "<<file_size<<endl; // strlen(buffer) affiche 3 et file_size dans les bcp plus :)
delete [] buffer;
}

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 juil. 2003 à 23:07
strlen compte le nombre d'octets partant de l'adresse indiquee jusqu'au 1er zero rencontre !!!
Et Dieu sait que il y en a des zeros dans un fichier binaire.
strlen est donc reserve pour compte la longueur des chaines de caracteres a terminateur NUL et pas pour autre chose.
BruNews, ciao...
0
guiguikun Messages postés 92 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 1 octobre 2003 1
25 juil. 2003 à 23:43
Comment puis-je faire un strstr sur mon buffer alors ? puisqu'il s'arrête au char NULL donc le 3eme ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 juil. 2003 à 23:49
mets un pointeur au debut du buffer et tu le pousses tant que < (buffer+file_size) et tu verif ce que tu veux sur lui comme base adresse.
BruNews, ciao...
0
guiguikun Messages postés 92 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 1 octobre 2003 1
26 juil. 2003 à 15:35
Je vais essayer ca, mais ca bouffe beaucoup plus de ressources qu'un strstr() :(
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 juil. 2003 à 15:49
aucune ressource en plus, le pointeur sert a rechercher le prochain octet != 0, rien d'autre et donc tu relances ton strstr sur le pointeur.
BruNews, ciao...
0
Rejoignez-nous