AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Eine Datei auf Größe prüfen und Hexadezimalwerte verändern
Thema durchsuchen
Ansicht
Themen-Optionen

Eine Datei auf Größe prüfen und Hexadezimalwerte verändern

Ein Thema von Rapthor · begonnen am 27. Apr 2003 · letzter Beitrag vom 27. Apr 2003
Antwort Antwort
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#1

Eine Datei auf Größe prüfen und Hexadezimalwerte verändern

  Alt 27. Apr 2003, 13:14
Also ich habe eine EXE Datei und will die an 2 Offsets verändern. Diese Offsets seien bekannt. Welche Befehle brauch ich denn da in Delphi?
Vor dem Ändern jedoch soll noch überprüft werden, ob die Datei eine bestimmte bitgenaue Größe hat.
Ich will so eine Art PATCH Engine damit programmieren.
Danke, Rapthor!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 27. Apr 2003, 13:27
Moin Rapthor,

einfach mit TFileStream öffnen, und an den gewünschten Stellen (z.b. mit der Eigenschaft Position zu erreichen) die Werte ändern (Write).

Da die kleinste Speichereinheit ein Byte ist wirst Du Dich wohl mit bytegenauer Grösse zufrieden geben müssen. (TFileStream.Size)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#3
  Alt 27. Apr 2003, 13:49
Und mit welchem Befehl öffne ich die Datei genau?
TFileStream.Open geht z.B. nicht und aus der Hilfe werd ich auch nicht schlau.Dieses TFileStream.Create muss ich mit welchen Parametern vorher ausführen?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 27. Apr 2003, 14:22
Moin Rapthor,

das steht doch in der Hilfe:
Pfad der Datei die zu öffnen ist, und wie die Datei geöffnet werden soll, in Deinem Falle also wohl fmOpenReadWrite.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#5
  Alt 27. Apr 2003, 15:45
So Datei wurde geöffnet und ich bin sogar schon per Seek an ein gewisses Offset gesprungen ... wie kann ich jetzt den Hexadezimalwert an dieser Stelle ändern?
Meinetwegen ist das Offset 000eba4e und als Wert hab ich 74 ..... ich will daraus ne 75 machen. Wie das?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 27. Apr 2003, 15:48
Moin Rapthor,

falls Dich der ursprüngliche Wert interessiert mit Read lesen, schreiben in jedem Falle mit Write.

Da das ja auch in der Hilfe steht:
An welcher Stelle liegt jetzt Dein Verständnisproblem?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#7
  Alt 27. Apr 2003, 15:52
an folgender:

Als Argumente für Write stehen "const Buffer" und "Count: Integer".
Wozu brauch ich nen Buffer und was soll das Count?
Welche der beiden Einträge entspricht denn dem geänderten Wert und wozu brauch ich dann den anderen.. so ganz klar is mir das nicht aus der Hilfe.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8
  Alt 27. Apr 2003, 15:59
Moin Rapthor,

der Parameter Buffer bezeichnet die Variable, in die die Daten eingelesen werden, bzw. aus der sie in die Datei geschrieben werden.
Hierfür kannst Du an Datentypen verwenden, was auch immer Du willst, da der Typ hier nicht vorgegeben ist.
In Deinem Falle wäre das wohl am sinnvollsten Byte.
(Das, je nach verwendetetem Typ, noch bestimmte Dinge zu beachten sind, will ich hier nur erwähnt haben)
Mit Count wird nun angegeben, wieviele Byte von Buffer geschrieben, bzw. aus der Datei gelesen werden sollen. Nicht immer soll ja der gesamte Bufferinhalt in der Datei landen, geschweige denn aus der Datei gelesen werden.

In Deinem Falle könnte das also so aussehen:


Delphi-Quellcode:
bBuffer : Byte;

Read(bBuffer,1);

// bzw.

Write(bBuffer,1);
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 16:12 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