![]() |
RC4 Verschlüsslung für Delphi
Hi Leute,
um den Code meines Programmes zu schützen, wollte ich es gerne RC4 verschlüsseln. Zum Verschlüsseln nutze ich den Code aus der CL, ich habe den link gerade nicht parrat. Mit der folgenden Funktion lese ich ersteinmal das Binär-File ein :
Delphi-Quellcode:
Der Author hat darauf hingewiesen, dass es zu Fehlern kommen kann, joar und das ist aufgetreten.
function FileToString(const AFilename: string; StartPos: Integer=0; EndPos: Integer=0): string;
var FileStream : TFileStream; wlCount: Integer; begin if FileExists(AFilename) then begin if StartPos < 0 then StartPos := 0; FileStream := TFileStream.Create(AFilename, fmOpenRead or fmShareDenyWrite); try if (EndPos <= StartPos) or (EndPos > FileStream.Size) then EndPos := FileStream.Size; wlCount := EndPos - StartPos; if FileStream.Size > StartPos then begin SetLength(Result, wlCount); FileStream.Seek(StartPos, soFromBeginning); FileStream.Read(Result[1], wlCount); end; finally FileStream.Free; end; end else Result := ''; end; MyCode := FileToString(MeineBinärDateiDa); RC4Init(MyContext,'MeinPasswort'); // Passwort RC4Code(MyContext,MyCode, MyCryptCode,Length(MyCode)); // Verschlüsseln RC4Done(MyContext); So nun bekomme ich eine AccessViolation. Und zwar beim RC4Code. Lasse ich mir "MyCode" ShowMessagen kommt auch nur "LMZ" Wie gehe ich das besser an? |
Re: RC4 Verschlüsslung für Delphi
Mich interessiert das Ganze auch. Und zwar verwende ich den Code von hier:
![]() Wenn man binäre Dateien also verschlüsseln will, kann man dann direkt TMemoryStream verwenden? Ich denke nicht, aber bis jetzt sieht mein Code so aus:
Delphi-Quellcode:
Ich werde auch nicht ganz schlau aus dem Verschlüsselungsalgorithmus, wird nur ein Zeichen von Source verschlüsselt oder die ganze Datei? Und die Datei mit oben genannter Funktion in einen String umzuwandeln wird auch nicht das wahre sein, dabei treten bestimmt Fehler auf...
var FileToEncrypt, EncyptedFile: TMemoryStream;
EncryptingFile: TRC4Context; begin RC4Init(EncryptingFile,'Passwort'); RC4Code(EncryptingFile, FileToEncrypt, EncyptedFile, FileToEncrypt.Size); Rc4Done(EncryptingFile); end; Edit: Wir arbeiten an dem gleichen Problem, deshalb wird es wohl ok sein wenn wir im gleichen Thread schreiben. |
Re: RC4 Verschlüsslung für Delphi
Zum Thema Datei verschlüsseln:
![]() Da wurde gerade vor ein paar Minuten eine entsprechende Unit gepostet, die direkt mit Streams arbeitet. ;-) |
Re: RC4 Verschlüsslung für Delphi
Danke bei mir funktioniert es jetzt.
Richtig toll dass ihr immer helft :D :dp: Edit: Sorry, beim decrypten nen kleiner Fehler :
Delphi-Quellcode:
RC4Init(MyContext, ProgramKey);
RC4Code(MyContext, ProgramCode, ProgramOrginalCode, Length(ProgramCode)); RC4Done(MyContext);
Code:
[DCC Fehler] Project1.dpr(23): E2033 Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
|
Re: RC4 Verschlüsslung für Delphi
oder kann es daran liegen dass ich versuche es mit ExeMod als String reinzuschreiben?
Wäre es klüger "Add2Exe" oder so zu benutzen? also kein String sondern das File? |
Re: RC4 Verschlüsslung für Delphi
Für Dateien siehe dieses Beispiel:
![]() Und wie meinst du das zuletzt? An die Exe anhängen? |
Re: RC4 Verschlüsslung für Delphi
ok habs rausgefunden.
Nur noch ein Problem : Exemod! Ich möchte die Daten anhängen, und das funktioniert auch recht gut, nur wenn ich AddFile2Exe mache, dann fügt er sie zu dem jetztigen hinzu. D.H. Er modifiziert nicht file b, sondern file a. Leider habe ich aber auch keinen einfluss darauf, welches File genommen wird. Ich habe versucht ReadExe nen parameter zu verpassen, aber das gibt das totale chaos DH gibt es ne Möglichkeit ReadExe und AlterExe auf eine Andere Datei anzupassen als Application.Exename Oder Stream2Exe, dies modifiziert nur wieder sich selbst. Das möchte ich aber nicht. |
Re: RC4 Verschlüsslung für Delphi
ohje wenn ich jetzt lese was ich da gestern noch zusammengeschrieben hab ^^:
Also das Problem ist das folgende, dass ExeMod manche Methoden nur auf sich selbst (also die Anwendung die gerade läuft), ausführt. Diese heißen dann immer "XXXXXXX2Exe", bsp. "AddFile2Exe", so nun wollte ich aber sowas wie "AddFile2File",da ich dort angeben kann, in welche Datei das rein soll. Technisch dürfte das kein Problem sein, denn wenn man strings in andere exen schreiben kann warum nich dateien? Dann habe ich noch gesehen es gibt ein "Stream2Exe", das wäre mir am liebsten, wenn ich damit "fremde" Dateien modifizieren könnte |
Re: RC4 Verschlüsslung für Delphi
Nimm doch einfach zwei FileStreams und kopiere es selbst (zusammen mit anderen Daten ggf.) rein (CopyFrom), bei einer fremden Exe ist das doch sowieso kein Problem.
|
Re: RC4 Verschlüsslung für Delphi
naja ich hätte schon gerne den ExeMod weil ich es damit wieder gut auslesen kann
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz