Autor Beitrag
Terra
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 307

Windows 7 Ultimate
Delphi® XE3
BeitragVerfasst: Di 27.12.05 11:38 
Servuz zusammen,

keine Ahnung, wo das jetzt genau reingehört aber ich glaube mal, das es hier passend ist.

Ich möchte eine Art Patch schreiben. Undzwar habe ich eine DLL Datei, wo ich z.B. mit nem Hex-Editor bestimmte Bereiche umschreiben kann. Jetzt möchte ich aber nicht immer ein Hex-Editor benutzen sondern ein kleines Programm schreiben, wo das umschreiben automatisch erfolgt. Die Automation dürfte ja kein Problem darstellen, allerdingst frage ich mich, wie ich an einem bestimmten Bereich in einer Datei ein Wert umschreiben kann ohne die ganze Datei zu beschädigen. Ich weis leider nicht ob die Möglichkeit besteht dies ala Hexadezimal-code im Programm zu erstellen (z.B. string_1 = 'A3 B1 46 3D CC'; ) oder wie ich das machen muss. Bin mir leider beim Aufbau einer schon complimierten Datei nicht ganz im klaren.

Vielleicht kann mir da jemand zur Hand gehen. Programmschnipsel oder sonstiges wären sehr Hilfreich.

MfG. Terra
Alstar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Di 27.12.05 11:45 
Also erstmal die gute Nachricht: In Delphi kann man sowas umsetzen; und das ist nochnichtmal so schwer.
Die schlechte Nachricht: Ich würde Dir raten, von der Hexadezimaldarstellung abzusehen und das in Bytes umrechnen.
Zum Patchen der Dateien würde ich den TFileStream benutzen.

Das könnte dann so funktionieren:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  filDatei: TFileStream;
  byteBuffer: Byte;
begin
  filDatei := TFileStream.Create('dieDatei.ext', fmOpenWrite); // Datei öffnen
  filDatei.Position := 33; // Dateizeiger an die richtige Position fahren (steht am 34. Byte!);
  byteBuffer := 122; // Das Byte, das geschrieben werden soll
  filDatei.WriteBufffer(byteBuffer, 1); // Byte schreiben
  filDatei.Free; // Fertig. FileStream freigeben
end;


Das könnte Dir auch noch weiterhelfen: Streams-Tutorial

Alstar
Terra Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 307

Windows 7 Ultimate
Delphi® XE3
BeitragVerfasst: Di 27.12.05 12:02 
Oh Klasse, sieht ja schonmal gut aus. Nur noch ne kurze zwischenfrage um nicht durcheinander zu kommen. Du sagtest, es ist besser es Byte´s umzurechnen. Gehe ich davon richtig aus, das die Werte dann von dem ASCII-Datensatz übernommen werden oder liege ich da komplett falsch. Wenn ja, erklär mir das mal bitte genauer.

Vielen Dank erstmal.

Terra
Alstar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Di 27.12.05 12:08 
Nein. Du liegst nicht falsch.
Der ASCII-Code ist ja allgemein gültig. Sprich: Gesetzt den Fall, du schreibst das Byte "49" in die Datei, wird es mit einem normalen Texteditor als "1" dargestellt.

Alstar
Terra Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 307

Windows 7 Ultimate
Delphi® XE3
BeitragVerfasst: Di 27.12.05 12:15 
Supi .. dann bin ich ja doch nicht so blöd wie ich dachte ^^

Jetzt noch was um mir evtl. eine weitere Suche zu erleichtern. In der vorhandenen Datei ist eine IP Adresse versteckt. Leider konnte ich diese mit nem Hex-Editor nicht finden. (Als Text)
Gibt es eine andere Möglichkeit die zu finden wenn die IP bekannt ist ?

Terra