Mit Includebinary eingebundene Datei nachträglich ändern
Mit Includebinary eingebundene Datei nachträglich ändern
Hi Leute,
ich habe mal ne Frage:
Ich habe eine Programm, das verschiedene Zertifizierungsdateien mittels IncludeBinary beinhaltet. Es kann nun notwendig werden diese enthaltenen Zertifizierungsdateien upzudaten. Ich müsste als eine fertig erstelle EXE öffnen, die dort mittels Includebinary enthaltenen Dateien entfernen, durch die neue Version ersetzen und die Exe wieder lauffähig zusammenflicken.
Mir ist bekannt, das man ein Exe nachträglich ändern kann (Da gibts ja schöne Beispiele von Mischa etc.) aber ist es auch möglich, die mittels Includebinary includierten Dateien einer Exe nachträglich zu ändern?
Danke für eure Aufmerksamkeit!
ich habe mal ne Frage:
Ich habe eine Programm, das verschiedene Zertifizierungsdateien mittels IncludeBinary beinhaltet. Es kann nun notwendig werden diese enthaltenen Zertifizierungsdateien upzudaten. Ich müsste als eine fertig erstelle EXE öffnen, die dort mittels Includebinary enthaltenen Dateien entfernen, durch die neue Version ersetzen und die Exe wieder lauffähig zusammenflicken.
Mir ist bekannt, das man ein Exe nachträglich ändern kann (Da gibts ja schöne Beispiele von Mischa etc.) aber ist es auch möglich, die mittels Includebinary includierten Dateien einer Exe nachträglich zu ändern?
Danke für eure Aufmerksamkeit!
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
du musst halt nur wissen, wo in der exe die daten stehen.
da wäre es wahrscheinlich am besten, per IncludeBinary nur einen Dummy einzusetzen,
den man einfach in einem HexEditor wiederfinden kann.
vor der auslieferung ersetzt du den Dummy durch die aktuellen Daten,
und dein Patch kann diese dann an der selben Stelle ersetzen.
da wäre es wahrscheinlich am besten, per IncludeBinary nur einen Dummy einzusetzen,
den man einfach in einem HexEditor wiederfinden kann.
vor der auslieferung ersetzt du den Dummy durch die aktuellen Daten,
und dein Patch kann diese dann an der selben Stelle ersetzen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Das mit dem Dummy ist ne gute Idee! Muss ich dann den Namen als Erkennungszeichen ("MeineDatei.txt") verwenden oder den Inhalt der Datei? Nach was suche ich am Besten?
Allgemein muss ich einfach nur wissen, wie ich in einer fertig erstellten Exe auslese, wo der Datasection Bereich anfängt und aufhört bzw. wie kann ich erkennen, wo die 1.Datei anfängt und aufhört und die 2. Datei anfängt und aufhört?
Was vielleicht noch ganz hilfreich wäre zur Info:
- Es werden zwei Dateien sein, die in der Exe ersetzt werden müssen
- Die Größe der Dateien kann natürlich variieren
Hab derweil das Problem das ich nicht weiß, wie ich herausfinden kann, wo die aktuellen Dateien includiert wurden. Wenn ich das weiß, ist der Rest Formsache.
Allgemein muss ich einfach nur wissen, wie ich in einer fertig erstellten Exe auslese, wo der Datasection Bereich anfängt und aufhört bzw. wie kann ich erkennen, wo die 1.Datei anfängt und aufhört und die 2. Datei anfängt und aufhört?
Was vielleicht noch ganz hilfreich wäre zur Info:
- Es werden zwei Dateien sein, die in der Exe ersetzt werden müssen
- Die Größe der Dateien kann natürlich variieren
Hab derweil das Problem das ich nicht weiß, wie ich herausfinden kann, wo die aktuellen Dateien includiert wurden. Wenn ich das weiß, ist der Rest Formsache.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
nach dem Inhalt natürlich, der name ist in der exe nicht mehr enthalten.
wenn deine datei zum includieren nur binary-daten enthalten sollen,
dann stelle deine Dummy-Datei doch einfach so zusammen,
dass du in ausreichender größe von 0-255 zählst.
z.B.:
erzeugt eine 2KB Dummy-Include.
dieses gleichmäßige Muster kannst du easy wiederfinden, um es ersetzen zu können.
> - Die Größe der Dateien kann natürlich variieren
die Größe der Dateien darf natürlich nicht variieren, das würde den kompletten ansatz ad absurdum führen.
nicht, dass es dann unmöglich wäre, aber du müßtest völlig anders und weit komplizierter herangehen.
PS:
du kannst allerdings den Dummy in einer maximalen Größe erzeugen,
und den einzusetzenden Teil um die fehlende Länge ergänzen,
dann natürlich nicht mit einem einfach zu erkennenden Muster.
wenn deine datei zum includieren nur binary-daten enthalten sollen,
dann stelle deine Dummy-Datei doch einfach so zusammen,
dass du in ausreichender größe von 0-255 zählst.
z.B.:
Code: Alles auswählen
CreateFile( 0, "dummy.inc" )
For Block = 0 to 7
For Byte = 0 to 255
WriteByte( 0, Byte )
Next
Next
CloseFile(0)
dieses gleichmäßige Muster kannst du easy wiederfinden, um es ersetzen zu können.
> - Die Größe der Dateien kann natürlich variieren
die Größe der Dateien darf natürlich nicht variieren, das würde den kompletten ansatz ad absurdum führen.
nicht, dass es dann unmöglich wäre, aber du müßtest völlig anders und weit komplizierter herangehen.
PS:
du kannst allerdings den Dummy in einer maximalen Größe erzeugen,
und den einzusetzenden Teil um die fehlende Länge ergänzen,
dann natürlich nicht mit einem einfach zu erkennenden Muster.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Muss es zwingend über IncludeBinary laufen?
Ich denke es ist einfacher die Dateien einfach ans Ende der .exe zu schreiben. Musst dann zwar selbst was schreiben zum auslesen aber ändern und ersetzen ist so ziemlich problemlos.
Ansonsten, gibts noch ne recht komplizierte Möglichkeit. Dabei werden die Dateien als Ressourcen eingebunden und können auch später modifiziert werden, was aber nicht unkompliziert ist.
Hier ist ein Open Source Ressource Editor: http://www.wilsonc.demon.co.uk/d10resourceeditor.htm
Ich denke es ist einfacher die Dateien einfach ans Ende der .exe zu schreiben. Musst dann zwar selbst was schreiben zum auslesen aber ändern und ersetzen ist so ziemlich problemlos.
Ansonsten, gibts noch ne recht komplizierte Möglichkeit. Dabei werden die Dateien als Ressourcen eingebunden und können auch später modifiziert werden, was aber nicht unkompliziert ist.
Hier ist ein Open Source Ressource Editor: http://www.wilsonc.demon.co.uk/d10resourceeditor.htm
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!

Ich würde schon gern Includebinary nutzen. Die andere Variante ist mir ja bekannt und ich wollte einfach mal den anderne Weg nehmen. Ist aber eher nen Streben nach Wissen
Rein theoretisch müsste es doch so gehen:
- Dummy schreiben mit wiedererkennbaren Muster und mittels IncludeBinary einfügen
- Exe erstellen
- Exe auslesen und Datasection Bereich ermitteln (Wird durch das Muster der Dummy gefunden und ermittelt)
- Diesen Bereich ausschneiden und durch die neuen Daten ersetzen
- Exe wieder zusammensetzen
Mein Problem ist, das ich nicht weiß, was sich hinter dem Befehl IncludeBinary und dem Block "Datasection" noch befindet. Gibts da Header oder Indexangaben, die ich ebenfalls ändern müsste oder ist das einfach nur ein festgelegter Bereich, der halt nicht am Ende der EXE steht sondern beispielsweise in der Mitte.

Rein theoretisch müsste es doch so gehen:
- Dummy schreiben mit wiedererkennbaren Muster und mittels IncludeBinary einfügen
- Exe erstellen
- Exe auslesen und Datasection Bereich ermitteln (Wird durch das Muster der Dummy gefunden und ermittelt)
- Diesen Bereich ausschneiden und durch die neuen Daten ersetzen
- Exe wieder zusammensetzen
Mein Problem ist, das ich nicht weiß, was sich hinter dem Befehl IncludeBinary und dem Block "Datasection" noch befindet. Gibts da Header oder Indexangaben, die ich ebenfalls ändern müsste oder ist das einfach nur ein festgelegter Bereich, der halt nicht am Ende der EXE steht sondern beispielsweise in der Mitte.
Was wäre hier zu beachten bzw. welche Problematik würde sich ergeben, wenn die Dateigrößen varrieren?nicht, dass es dann unmöglich wäre, aber du müßtest völlig anders und weit komplizierter herangehen.
- Knight_Rider_2000
- Beiträge: 145
- Registriert: 05.02.2007 20:46
- Kontaktdaten:
die beste alternative ist es eigentlich noch
zu benutzen. ist leicht mit
wiederzufinden und auch zu bearbeiten
Bei fragen der benutzung dieser Funktionen einfach fragen
Code: Alles auswählen
BeginUpdateResource_() : UpdateResource_() : EndUpdateResource_()
Code: Alles auswählen
FindResource_()
Bei fragen der benutzung dieser Funktionen einfach fragen
PB 4.20,Blitz3D 1.98,Microsoft Visual Studio 2005 Professional, Microsoft Visual Studio 2008 Professional
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Falls noch Programmcode hinter der DataSection steht, dann würde dieCNESM hat geschrieben:Was wäre hier zu beachten bzw. welche Problematik würde sich ergeben, wenn die Dateigrößen varrieren?nicht, dass es dann unmöglich wäre, aber du müßtest völlig anders und weit komplizierter herangehen.
Position dessen ja auch verschoben werden. Da aber in einer EXE-Datei fast
alle JUMP-Befehle absolut sind, müsstest du diese wieder ändern.
Schreib die Dateien doch einfach ans Ende der Datei und dahinter noch die
Größer der Dateien, damit du sie leicht auslesen, entfernen und wieder
einfügen kannst.
- Knight_Rider_2000
- Beiträge: 145
- Registriert: 05.02.2007 20:46
- Kontaktdaten:
deshalb lieber UpdateResource_() benutzen. positionsmarker in der exe werden dadurch nicht beschaedigt und die Resource kann trotzdem *resized* werdenNicTheQuickwrote:Falls noch Programmcode hinter der DataSection steht, dann würde die
Position dessen ja auch verschoben werden. Da aber in einer EXE-Datei fast
alle JUMP-Befehle absolut sind, müsstest du diese wieder ändern.
Wenn man die Daten ans ende der exe schreibt kommt es auch zwischendurch mal vor das windows dahinter die x vielen nullen schreibt die sonst am ende der exe stehen und man kommt so leicht nicht mehr an den datensatz heranNicTheQuickwrote:Schreib die Dateien doch einfach ans Ende der Datei und dahinter noch die
Größer der Dateien, damit du sie leicht auslesen, entfernen und wieder
einfügen kannst.
PB 4.20,Blitz3D 1.98,Microsoft Visual Studio 2005 Professional, Microsoft Visual Studio 2008 Professional
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Aha, das wusste ich auch noch nicht. Bisher hat es mit dieser MethodeKnight_Rider_2000 hat geschrieben:Wenn man die Daten ans ende der exe schreibt kommt es auch zwischendurch mal vor das windows dahinter die x vielen nullen schreibt die sonst am ende der exe stehen und man kommt so leicht nicht mehr an den datensatz heran
immer funktioniert.
Gibt es da auch Pendants für Linux?