Bonjour les amis,
Je souhaiterai faire une extraction d'une partie de code, depuis un exécutable , et ce, en c++.
En fait, je possède un exe , qui contient, deux exe en un.
Je connais les adresses de début et de fin.
Je souhaiterai en c++ pouvoir extraire ce "bout de code" de cet exe avec mon adresse de début, et mon adresse de fin, puis en faire un nouvel exécutable.
On m'a dit de chercher du coté des IfStream....
J'ai éssayé d'adapter un exemple, mais c'est peu concluant, cela me donne un fichier de 3 octets...
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
28
29
30 int length; char * buffer; char szExeName[256]; //Buffer qui va contenir le nom du fichier GetModuleFileName (NULL, szExeName, 256); ifstream is; is.open (szExeName, ios::binary ); // get length of file: is.seekg (0, ios::end); length = is.tellg(); is.seekg (0, ios::beg); // allocate memory: buffer = new char [length]; // Je me positionne, et je lit is.seekg (0X00000010); is.read(buffer,85010); is.close(); ofstream objetfichier; objetfichier.open("monfichier.exe", ios::out); //On ouvrre le fichier en ecriture if (objetfichier.bad()) //Permet de tester si le fichier s'est ouvert sans probleme MessageBox("erreur","ok"); objetfichier <<buffer<<; objetfichier.close(); //On ferme le fichier pour liberer la mémoire delete[] buffer;
Mon fichier final Mon Fichier.exe ne fais que 3octets.
Cela vient aparemment de la lecture, j'ai également changé les fofset de lecture, cela ne change rien, le fichier est mal lu.
N'y a t-il pas une autre solution de lecture ?
Sachant que, comme il s'agit d'un exe je dois lire en binaire, et si possible utiliser des adresse sous forme Héxadécimales.
Merci bcp
Nixeus'
Partager