Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   exe-Files, Datenblock unterbringen (https://www.delphipraxis.net/162999-exe-files-datenblock-unterbringen.html)

Cicaro 12. Sep 2011 12:50

exe-Files, Datenblock unterbringen
 
Hallo.

Weiß jemand, wie man am besten Daten in eine exe-Datei einbinden kann OHNE res-Dateien. Ich möchte einfach einen beliebig großen Block innerhalb einer exe-Datei unterbringen, so dass diese fehlerfrei ausführbar bleibt. Ich möchte nämlich meine Daten direkt durch eigenen Delphi-Code in eine exe-Datei "einschmuggeln". Ressourcen gehen, aber dann nur mit WinApi. (Muss zur Laufzeit eingebunden werden. Wird natürlich von nem anderen Programm gemacht....)

Ich habe bereits versucht den Datenblock ans Dateiende zu schreiben. Die exe bleibt ausführbar. Jedoch schließt sie mit einem Fehler. Das Dateiende muss wohl auch wie der Anfang ein bestimmtes Format haben.

Deswegen die Frage, wo tu ich meinen Datenblock hin ? Weiß jemand, wo solche "freien" Orte in der exe-Datei existieren oder wie man sie auffindet ?

//edit Das eigentliche Problem ist, WO und wie ich die Daten in der exe unterbringe. Ich habe es bereits am Ende der Datei versucht und getestet. Es funktioniert. ABER Windows meldet mir, dass die Datei "beschädigt" ist. DAS möchte ich korrigieren.

Windows: "Das Programm wurde eventuell nicht richtig installiert."


MfG

himitsu 12. Sep 2011 12:58

AW: exe-Files, Datenblock unterbringen
 
Und was hast du gegen Ressourcen?
Der Ort ist ja schließlich für sowas gedacht.

PS: Ich wette du hast zum Anhängen der Daten, an das Dateiende, auch die WinAPI genutzt (wenn auch vielleicht über Umwege)

Aphton 12. Sep 2011 13:16

AW: exe-Files, Datenblock unterbringen
 
Mein sich selbstentpackendes Archiv macht dies folgendermaßen - Daten einfach ans Ende anhängen und nachher extrahieren:
Code:
- Exe
- Daten
- Datengröße X (Int64)
Ich lese die Datengröße aus und extrahiere ab der letzten Stelle - X - Größe von Int64 X Bytes!

Cicaro 12. Sep 2011 13:37

AW: exe-Files, Datenblock unterbringen
 
Zitat:

Zitat von himitsu (Beitrag 1123607)
Und was hast du gegen Ressourcen?
Der Ort ist ja schließlich für sowas gedacht.

PS: Ich wette du hast zum Anhängen der Daten, an das Dateiende, auch die WinAPI genutzt (wenn auch vielleicht über Umwege)

Ich möchte die Daten ohne nochmaliges Compilieren in die exe einschleusen. Und ich habe geschrieben Ressource sind möglich, wenn es eben DURCH WinApi erfolgt.
Zitat:

Zitat von Aphton (Beitrag 1123617)
Code:
- Exe
- Daten
- Datengröße X (Int64)

Genauso habe ich es auch gemacht. Verursacht einen Fehler beim Schließen der resultierenden exe :(

DeddyH 12. Sep 2011 13:44

AW: exe-Files, Datenblock unterbringen
 
IIRC gibt es hier irgendwo ein Projekt, das das wohl ermöglichen soll. Der genaue Name ist mir leider entfallen, irgendetwas mit DataStream oder so ähnlich. Vielleicht kannst Du einmal danach suchen.

NickelM 12. Sep 2011 13:47

AW: exe-Files, Datenblock unterbringen
 
Das Ding ist das du in einer geöffneten Exe nichts schreiben kannst.

Man muss es zwangsläufig so machen:
- Die Eigentliche Exe, d.h. die dann ausgeführt wird und den Datenblock in sich selbst lisst
- "Creator" Exe, die an die eigentliche Exe den Datenblock schreibt.

Man muss so vorgehen :
- "Creator" Exe : schreibt in eine neue Datei (anderen Namen als die eigentliche Exe) den Inhalt der exe und merkt sich die genaue größe der Exe. Danach schreibt sie den Datenblock. Danach als Int64 oder Integer die größe der Exe an das ENDE der Datei, das ist ganz wichtig und auch am leichtesten dann.
- Eigentliche Exe : öffnet sich selbst, geht ans ende und lisst die größe aus (also ende minus SizeOf(Integer) oder SizeOf(Int64)) . Danach springt sie wieder an den anfang und geht bis zur größe, die herausgelessen wurde. Datenblock lesen, fertig.

Ich hoffe du hast das Prinzip verstanden, wenn nicht kann ich dir ein Code beispiel geben.

Gruß NickelM

himitsu 12. Sep 2011 14:16

AW: exe-Files, Datenblock unterbringen
 
Und dann noch die Virenscanner, welche gerne mal was dagegen haben, wenn sich eine EXE verändert.

Also wenn sich das Programm öfters mal (beim Endbenutzer) verändert.

Cicaro 12. Sep 2011 14:18

AW: exe-Files, Datenblock unterbringen
 
Zitat:

Zitat von NickelM (Beitrag 1123640)
Das Ding ist das du in einer geöffneten Exe nichts schreiben kannst.

Danke, aber das ist nicht das Problem. Siehe oben nochmal das Rote.

Aphton 12. Sep 2011 14:34

AW: exe-Files, Datenblock unterbringen
 
Zitat:

Zitat von Cicaro (Beitrag 1123601)
//edit Das eigentliche Problem ist, WO und wie ich die Daten in der exe unterbringe. Ich habe es bereits am Ende der Datei versucht und getestet. Es funktioniert. ABER Windows meldet mir, dass die Datei "beschädigt" ist. DAS möchte ich korrigieren.

Windows: "Das Programm wurde eventuell nicht richtig installiert."

Ich sehe ganz genau wo das Problem liegt - Zeile 237!

Edit: Ne im ernst - wie schon bereits geschildert:
Hauptanwendung A -> Entpacker Anwendung B (als Resource)
A entpackt B und hängt die Daten wie zuvor beschrieben an B.
B extrahiert die Daten bei der Ausführung wie bereits beschrieben!

Its that simple!

NickelM 12. Sep 2011 14:39

AW: exe-Files, Datenblock unterbringen
 
Hä? lol okay?
ehm dann muss das Problem am Windows liegen, klar @himitsu meine meldet das auch immer beim kompelieren aber danach net mehr.

@Cicaro : gut aber dann wie alphton so treffen angedeutet hat, liegt das problem woanders, was macht deine Exe genau auser Daten lesen, weil dann liegt das Problem meiner Ansicht nach woanders.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:07 Uhr.
Seite 1 von 4  1 23     Letzte »    

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