Bonjour,
Dans le cadre d'un mémoire, je développe actuellement un programme permettant de sélectionner un fichier.exe, puis d'afficher son contenu sous forme d'octet à la manière d'un shellcode (\x45 \x76 \x00 ...)
Cependant, je suis en face d'un problème, voici mon programme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void MainWindow::generate_shellcode()
{
 
    qDebug()<<"\t===========================================================\n\t=\t  Génération du shellcode\t\t=\n\t===========================================================\n\n";
 
    //int i; //On initialise le curseur i
    //char c; //On initialise le curseur c
    QFile fichier(_file_path);
    if(fichier.open(QIODevice::ReadOnly)) //Si le fichier s'ouvre..
    {
         qDebug()<<"Fichier ouvert";
         _shellcode = fichier.readAll(); //_shellcode etant un QByteArray
         _sizeData = sizeof(_shellcode); //_sizeData est un unsigned char
         qDebug()<<"La taille de data est: "<<_sizeData;
         _shellcode.resize(_sizeData);
         qDebug()<<"\nVoici le shellcode: \n"<<_shellcode<<"\n";
         fichier.close();
 
    }
    else { //Sinon  on affiche une erreur
        qDebug()<<"Impossible d'ouvrir le fichier !";
        QString err = "Impossible d'ouvrir le fichier !";
        afficher_err(err);
 
    }
 
}
Cependant, j'obtient le résultat suivant:
================================
= Génération du shellcode =
================================


Fichier ouvert
La taille de data est: 8

Voici le shellcode:
"MZ\x90\x00\x03\x00\x00\x00"

Or mon fichier en .exe est bien plus grand que 8 octets, et il me semble que la lecture de celui-ci s'arrête à cause des caractère \x00 (fin de ligne).
Je cherche donc comment contourner ce problème.
Merci d'avance de vos réponses.