AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi im HEX-Code geänderte Datei wieder speichern?
Thema durchsuchen
Ansicht
Themen-Optionen

im HEX-Code geänderte Datei wieder speichern?

Ein Thema von buster55 · begonnen am 4. Nov 2008 · letzter Beitrag vom 4. Nov 2008
Antwort Antwort
buster55

Registriert seit: 25. Nov 2007
88 Beiträge
 
#1

im HEX-Code geänderte Datei wieder speichern?

  Alt 4. Nov 2008, 20:22
Moin
Ich öffne eine exe Datei mit Delphi und lasse ihren Hexcode anzeigen, das klappt auf wunderbar, er wird in einer memo sichtbar gemacht. Nun bearbeitet mein Programm den Hexcode, was auch klappt. Nun möchte ich die Veränderungen aber auch auf die Ursprungsdatei übertragen, möchte also aus dem ganzen bearbeiteten ($65 $6F $20 $54 $01 $EC $00 $49.............) Gewirr wieder eine exe machen. Ich kann ja schlecht
memo.lines.savetofile('C:\hex.exe') schreiben

bitte um Hilfe und Codebsps.


danke im Vorraus
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: im HEX-Code geänderte Datei wieder speichern?

  Alt 4. Nov 2008, 20:23
Warum nicht?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von MSSSSM
MSSSSM

Registriert seit: 18. Apr 2008
223 Beiträge
 
Delphi 7 Professional
 
#3

Re: im HEX-Code geänderte Datei wieder speichern?

  Alt 4. Nov 2008, 20:25
Weil im Memo nur der HexCode steht
Marius
  Mit Zitat antworten Zitat
buster55

Registriert seit: 25. Nov 2007
88 Beiträge
 
#4

Re: im HEX-Code geänderte Datei wieder speichern?

  Alt 4. Nov 2008, 20:32
du kannst ja auch nicht einen Delphi Quellcode einfach in ner .exe speichern
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: im HEX-Code geänderte Datei wieder speichern?

  Alt 4. Nov 2008, 20:32
Irgendwie liest du die Datei ja auch aus und lässt dir das ganze in hex darstellen. Wenn du diesen Quelltext dir selbst erarbeitet hast dürfte es doch nicht das Problem sein in umgekehrte Richtung das ganze wieder zu speichern?!
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
buster55

Registriert seit: 25. Nov 2007
88 Beiträge
 
#6

Re: im HEX-Code geänderte Datei wieder speichern?

  Alt 4. Nov 2008, 20:44
wenn dem so wäre
Allerdings ist die Welt der binär und hexdezimal Codes für mich absolutes Neuland, deshalb habe ich den Code der den hexcode ließt nicht selbst geschreiben:
Delphi-Quellcode:
var
  fs: TFileStream;
  Buffer: TMyByteArray;
  BytesRead: Longint;
  s: string;
  i: Int64;
  HexLength: Integer;
begin
  i := 0;
  SetLength(Buffer, BUFFERSIZE);
  fs := TFileStream.Create(edit1.text,
    fmOpenRead);
  HexLength := Length(HEXPREFIX) + 2 + Length(HEXSUFFIX);
  SetLength(s, fs.size * HexLength);
  Progressbar1.Max := fs.Size div BUFFERSIZE;
  try
    repeat
      BytesRead := fs.Read(Buffer[0], BUFFERSIZE);
      Move(BuffToHex(Buffer)[1], s[i * (HexLength * BUFFERSIZE) + 1],
        HexLength * BytesRead);
      Inc(i);
      Progressbar1.StepIt;
      Application.ProcessMessages;
    until BytesRead < BUFFERSIZE;
    memo1.SelText := s;
  finally
    FreeAndNil(fs);
  end;
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: im HEX-Code geänderte Datei wieder speichern?

  Alt 4. Nov 2008, 20:56
Folgender Code schreibt einfach Hex Zeichen in einer Datei. Wobei zuerst in einem StringList gespeichert wird (hab ich nur jetzt ganz schnell zusammengetippt, natürlich kannst es besser machen wenns magst). Die Zeichen werden danach in einem array von bytes gespeichert und das wird dann in einer Datei geschrieben.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  n, len: Integer;
  s: string;
  sl: TStringList;
  ba: array of Byte;
  fs: TFileStream;
begin
  len := 0;
  sl := TStringList.Create;
  s := Memo1.Text;
  s := StringReplace(s, '$', '', [rfReplaceAll]);
  s := StringReplace(s, '0x', '', [rfReplaceAll]);
  sl.Delimiter := ' ';
  sl.DelimitedText := s;
  SetLength(ba, sl.Count);
  for n := 0 to sl.Count -1 do
  begin
    ba[n] := StrToInt('$' + sl[n]);
  end;
  sl.Free;
  fs := TFileStream.Create('c:\okay.txt', fmOpenWrite or fmCreate);
  fs.Write(Pointer(ba)^, Length(ba));
  fs.Free;
end;
  Mit Zitat antworten Zitat
buster55

Registriert seit: 25. Nov 2007
88 Beiträge
 
#8

Re: im HEX-Code geänderte Datei wieder speichern?

  Alt 4. Nov 2008, 21:09
Funktioniert Perfekt!
natürlich nicht okay.txt sondern .exe
Dickes THX!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz