PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ - .exe Datei binär einlesen?



B4n4n4
12.06.2010, 13:24
Hallo!

Habe viel gegoogelt, aber das was ich gefunden habe war zu 95% über meinem aktuellen Level, und der Rest unbrauchbar.

Ich würde gerne wissen ob & wie man eine .exe Datei einlesen kann (um sie z.B. zu verschlüsseln), bin bereits oft über den Begriff binäres einlesen gestolpert. Ich kann mir darunter auch etwas vorstellen kenne aber die Befehle nicht.

Ich bin mir aber sicher das einer von euch die kennt! :D
Wäre nett wenn jemand helfen könnte.

MfG
B4n4n4

BlackCobra
12.06.2010, 13:28
Buck dir mal den Befehl fstream an.

ocz
12.06.2010, 13:30
Die C++ Methode wäre streng genommen wieder mit ifstream.



ifstream myFile ("data.bin", ios::in | ios::binary);
char buf[128];
myFile.read (buf, 128);


Die C-Variante wäre mit FILE*, meiner Meinung nach einfacher zu benutzen und praktischer.


FILE* fp = fopen("c:\\test.txt", "rb");
fseek(...);
fread(...);

B4n4n4
12.06.2010, 13:30
@BlackCobra
fstream ist nur ein Header, der Befehl den du vermutlich meinst heißt ifstream.

Mit dem habe ich es auch bereits versucht, aber weis nicht genau wie ich den Befehl hier verwenden muss.

BlackCobra
12.06.2010, 13:33
sry meinte ifstrem böse Tastatur http://www.cplusplus.com/query/search.cgi?q=ifstream

ocz
12.06.2010, 13:34
Buck dir mal den Befehl fstream an.

sry meinte ifstream böse Tastatur

fstream, ifstream, ofstream, ... sind keine Befehle, sondern Klassen für Streams.


@BlackCobra
fstream ist nur ein Header, der Befehl den du vermutlich meinst heißt ifstream.

Mit dem habe ich es auch bereits versucht, aber weis nicht genau wie ich den Befehl hier verwenden muss.

Die Antwort mit fstream / ifstream war dennoch ziemlich unnötig, da du die Klasse wohl selber schon kanntest (Siehe dein Ceasar Thread).

BlackCobra
12.06.2010, 13:38
C++ File I/O - binary files using fstream (http://www.codersource.net/c/c-tutorial-on-file-operations/c-file-i-o-binary-files-using-fstream.aspx) ist das hier besser?

wacked
12.06.2010, 13:38
Per WinApi (fopen greift im endeffekt auch darauf zu):CreateFile (http://msdn.microsoft.com/en-us/library/aa363858%28VS.85%29.aspx),ReadFile (http://msdn.microsoft.com/en-us/library/aa365467%28v=VS.85%29.aspx)( und CloseHandle() nicht vergessen).


HANDLE hFile = CreateFile("test.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
return FALSE;
}
char Buffer[512]; DWORD dwBytesRead;
ReadFile(hFile, Buffer, 512, &dwBytesRead, NULL);
Buffer[dwBytesRead]=0;
MessageBox(0,Buffer,"Eingelesen wurde:",0);
CloseHandle(hFile);

ocz
12.06.2010, 13:40
C++ File I/O - binary files using fstream (http://www.codersource.net/c/c-tutorial-on-file-operations/c-file-i-o-binary-files-using-fstream.aspx) ist das hier besser?

Das ist brauchbar :) Wenn man auf die C++ Variante besteht.


Per WinApi (fopen greift im endeffekt auch darauf zu):CreateFile (http://msdn.microsoft.com/en-us/library/aa363858%28VS.85%29.aspx),ReadFile (http://msdn.microsoft.com/en-us/library/aa365467%28v=VS.85%29.aspx)( und CloseHandle() nicht vergessen).


HANDLE hFile = CreateFile("test.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
return FALSE;
}
char Buffer[512]; DWORD dwBytesRead;
ReadFile(hFile, Buffer, 512, &dwBytesRead, NULL);
Buffer[dwBytesRead]=0;
MessageBox(0,Buffer,"Eingelesen wurde:",0);
CloseHandle(hFile);

Das ist jetzt aber nicht Programmiersprachen- sondern OS-spezifisch.

BlackCobra
12.06.2010, 13:50
bin halt eher für c++ nicht für c# oder visual c++. Außerdem habe ich grade erst mit cpp angefangen