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:
Cependant, j'obtient le résultat suivant:
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); } }
================================
= 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.
Partager