inmate
09.07.2010, 11:07
Hallo, ich wollte einen einfachen Scantime Crypter schreiben, doch ich stoße auf ein Problem. Die "Crypted.exe" wird nicht erstellt. Mein aktueller Source soll einfach nur die Datei einlesen und in die "Crypted.exe" im Pfad des Crypters schreiben. Der Source ist kommentiert, vllt kann der ein oder andere ja noch was davon lernen. Falls etwas falsch ist "sry".
#include <iostream> // benötigt für cout und cin
#include <windows.h> // benötigt für die API´s
#include <string.h> // benötigt für strcat
using namespace std;
#define splitchr "?0)8/6%4§2_1!" //SplitString der die Dateien wieder voneinander trennt.
#define stubpath "Stub.exe" //Der Pfad zur Stub Datei
#define mutex "[000]" //Mutex welcher erzeugt wird, damit der Crypter nicht 2x geöffnet werden kann.
#define cryptedfile "\\Crypted.exe" //Output file
int main()
{
char filebuffer[150]; // Dateibuffer
char directorybuffer[1024]; // Pfadbuffer
char pfad[MAX_PATH]; // Pfad zur Datei die eingelesen werden soll.
FILE * f; // Datei handle
CreateMutex(0, false, mutex); // Mutex wird erzeugt.
if (GetLastError() == ERROR_ALREADY_EXISTS){ // Wenn der letzte zurückgegbene Fehler "ERROR_ALREADY_EXISTS" ist, dann beende den Crypter
ExitProcess(1); // Crypter wird beendet.
}
cout << "Bitte geben sie den Pfad an:\n"; // User wird aufgefordert den Pfad anzugeben in dem die zu cryptende Datei liegt.
cin >> pfad; // Pfad wird gelesen.
if (pfad != ""){
f = fopen(pfad, "br"); // Datei wird binär und zum lesen geöffnet (b = binäry, r = read)
fseek(f, 0, SEEK_SET); // Pointer wird an den Anfang der Datei gesetzt.
fread(filebuffer, sizeof(filebuffer), 1, f); // Datei wird eingelesen.
fclose(f);
GetCurrentDirectory(1024, directorybuffer); // Aktueller Pfad wird ermittelt
f = fopen(strcat(directorybuffer, cryptedfile), "bw"); // die Output Datei wird erstellt, durch strcat werden 2 Char Variablen miteinander Verknüpft. (b = binäry, w = write)
fseek(f, 0, SEEK_SET); // Pointer wird an den Anfang der erstellten Datei gesetzt.
fwrite(filebuffer, 1, sizeof(filebuffer), f); // Dateibuffer wird in die Datei geschrieben.
fclose(f);
cout << "Datei erfolgreich verschlüsselt\n"; // Ausgabe damit der Benutzer weiß das alles funktioniert hat.
// Console weiterhin offen laßen.
} else {
cout << "Der Pfad existiert nicht!\n"; // Fehlermeldung wenn der Dateipfad welcher eingegeben werden muss leer ist.
}
getchar();
}
Vielleicht kann mir ja einer sagen wo mein Fehler liegt. Bitte mit Erklärung ;)
Edit: Getchar() weggemacht ;)
mfG
#include <iostream> // benötigt für cout und cin
#include <windows.h> // benötigt für die API´s
#include <string.h> // benötigt für strcat
using namespace std;
#define splitchr "?0)8/6%4§2_1!" //SplitString der die Dateien wieder voneinander trennt.
#define stubpath "Stub.exe" //Der Pfad zur Stub Datei
#define mutex "[000]" //Mutex welcher erzeugt wird, damit der Crypter nicht 2x geöffnet werden kann.
#define cryptedfile "\\Crypted.exe" //Output file
int main()
{
char filebuffer[150]; // Dateibuffer
char directorybuffer[1024]; // Pfadbuffer
char pfad[MAX_PATH]; // Pfad zur Datei die eingelesen werden soll.
FILE * f; // Datei handle
CreateMutex(0, false, mutex); // Mutex wird erzeugt.
if (GetLastError() == ERROR_ALREADY_EXISTS){ // Wenn der letzte zurückgegbene Fehler "ERROR_ALREADY_EXISTS" ist, dann beende den Crypter
ExitProcess(1); // Crypter wird beendet.
}
cout << "Bitte geben sie den Pfad an:\n"; // User wird aufgefordert den Pfad anzugeben in dem die zu cryptende Datei liegt.
cin >> pfad; // Pfad wird gelesen.
if (pfad != ""){
f = fopen(pfad, "br"); // Datei wird binär und zum lesen geöffnet (b = binäry, r = read)
fseek(f, 0, SEEK_SET); // Pointer wird an den Anfang der Datei gesetzt.
fread(filebuffer, sizeof(filebuffer), 1, f); // Datei wird eingelesen.
fclose(f);
GetCurrentDirectory(1024, directorybuffer); // Aktueller Pfad wird ermittelt
f = fopen(strcat(directorybuffer, cryptedfile), "bw"); // die Output Datei wird erstellt, durch strcat werden 2 Char Variablen miteinander Verknüpft. (b = binäry, w = write)
fseek(f, 0, SEEK_SET); // Pointer wird an den Anfang der erstellten Datei gesetzt.
fwrite(filebuffer, 1, sizeof(filebuffer), f); // Dateibuffer wird in die Datei geschrieben.
fclose(f);
cout << "Datei erfolgreich verschlüsselt\n"; // Ausgabe damit der Benutzer weiß das alles funktioniert hat.
// Console weiterhin offen laßen.
} else {
cout << "Der Pfad existiert nicht!\n"; // Fehlermeldung wenn der Dateipfad welcher eingegeben werden muss leer ist.
}
getchar();
}
Vielleicht kann mir ja einer sagen wo mein Fehler liegt. Bitte mit Erklärung ;)
Edit: Getchar() weggemacht ;)
mfG