Neues Problem mit Verschlüsselungsprogramm
Hallo nochmal! Wollte nicht noch einen neuen Thread aufmachen, desshalb poste ich mein neues Problem gleich hier! (Geht ja noch immer ums selbe Programm, Beschreibung siehe im Quote unten).
Das Problem: Alles läuft soweit super, der Code wird korrekt verschlüsselt und auch der Decrypter-Code wird korrekt abgespeichert (hier nochmal vielen Dank an deepthroat für die Hilfe
). Jetzt ist es allerdings so:
Sobald der Decrypter-Code sagen wir mal höher als 06000h liegt (Offset), also z.B. bei 09000h, dann crasht das Programm beim Ausführen. Wenn es näher ist (z.B. 04000h), dann funktioniert alles perfekt!
Woran kann das liegen? Die Characteristics sind alle richtig, sogar BaseOfCode habe ich geändert - bringt alles nichts. Wie weit kann der "jmp" Befehl von Assembler gehen?
Ich weiß, das hat jetzt mit deutlich mehr als nur C++ zutun, aber vl kann ja jemand helfen!
Danke schonmal,
eXus49
Altes Problem + Programmbeschreibung:
Hallo nochmal! Wollte nicht noch einen neuen Thread aufmachen, desshalb poste ich mein neues Problem gleich hier! (Geht ja noch immer ums selbe Programm, Beschreibung siehe im Quote unten).
Das Problem: Alles läuft soweit super, der Code wird korrekt verschlüsselt und auch der Decrypter-Code wird korrekt abgespeichert (hier nochmal vielen Dank an deepthroat für die Hilfe
![Smile :) :)](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f642.png)
Sobald der Decrypter-Code sagen wir mal höher als 06000h liegt (Offset), also z.B. bei 09000h, dann crasht das Programm beim Ausführen. Wenn es näher ist (z.B. 04000h), dann funktioniert alles perfekt!
Woran kann das liegen? Die Characteristics sind alle richtig, sogar BaseOfCode habe ich geändert - bringt alles nichts. Wie weit kann der "jmp" Befehl von Assembler gehen?
Ich weiß, das hat jetzt mit deutlich mehr als nur C++ zutun, aber vl kann ja jemand helfen!
Danke schonmal,
eXus49
Altes Problem + Programmbeschreibung:
AltesProblem hat gesagt.:Hallo,
ich brauche eure Hilfe, weil ich alleine einfach nicht weiter komme.
Ich will ein Programm schreiben, dass automatisch eine exe-Datei vom EntryPoint bis zum Ende der .text-Section verschlüsselt und in eine neu angelegte Section eine Art Decrypter-Code reinschreibt (der mir als Hex-String vorliegt).
Ich habe folgende 2 Probleme:
- Das Einlesen, verschlüsseln und zurückschreiben der Datei klappt nicht richtig. Ich will die Datei erstmal nur XOR verschlüsseln, aber das klappt nicht (Code unten).
- Das Schreiben des Decrypter-Codes klappt auch nicht richtig. Der Code wird nicht als Hex, sondern irgendwie anders in die Datei geschrieben.
Code zum Teilproblem "Einlesen":
Code:char * buff[(int) SizeinBytes]; FILE *fbin; size_t result; fbin = fopen(File, "rb+"); //Öffnet die Datei zum Lesen & Schreiben (Binary-Mode?) fseek(fbin,(long) EPinBytes, SEEK_SET); //EPinBytes = Adresse des Entrypoints in Bytes result = fread(buff, sizeof(char),(size_t) SizeinBytes, fbin); //SizeinBytes = Anzahl der zu lesenden Bytes for (x = 0; x<SizeinBytes; x++) //Solange x < der Anzahl der zu lesenden Bytes... { buff[x] = (char *) ((BYTE) buff[x] ^ (BYTE) 0xF); //...soll jedes Zeichen ^0xF genommen werden (hier besteht wohl hoher Verbesserungsbedarf) } fseek(fbin,(long) EPinBytes, SEEK_SET); //Wieder auf den Entry-Point zurücksetzen... fwrite(buff, sizeof(char), sizeof(buff), fbin); //...und alles reinschreiben fclose(fbin); //Datei schließen
Code zum Teilproblem Decrypter-String schreiben:
Code:FILE * fbin2; char * decStub[250]; *decStub = "\xC7\x45\xF4\x00\x00\x40\x00\xC7\x45\xF0" "\xAD\xDE\x00\x00\x8B\x45\xF4\x05\xEF\xBE\x00\x00\x89\x45\xF4\xC7\x45\xFC" "\x00\x00\x00\x00\xEB\x09\x8B\x4D\xFC\x83\xC1\x01\x89\x4D" "\xFC\x8B\x55\xFC\x3B\x55\xF0\x7D\x22\x8B\x45\xF4\x03\x45" "\xFC\x8A\x08\x88\x4D\xF8\x0F\xBE\x55\xF8\x83\xF2\x0F\x88" "\x55\xF8\x8B\x45\xF4\x03\x45\xFC\x8A\x4D\xF8\x88\x08\xEB" "\xCD\xFF\x65\xF4"; //Der Decrypter-String im Hex-Format fbin2 = fopen(File, "rb+"); //Öffnet die Datei zum Lesen & Schreiben im Binary-Mode fseek(fbin2, (long) NEPinBytes, SEEK_SET); //Setzt den Zeiger auf einen neuen EP (Anfang der neu erstellten Section) fwrite(decStub, sizeof(char), sizeof(decStub), fbin2); //schreibt den Code fclose(fbin2); //schließt die Datei
Ich hoffe ich habe alles verständlich kommentiert, wenn nicht, dann fragt einfach nach!
Ich wäre euch über eure Hilfe sehr dankbar!
mFg
eXus49
Zuletzt bearbeitet: