Delphi-PRAXiS

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.

Cicaro 12. Sep 2011 14:56

AW: exe-Files, Datenblock unterbringen
 
Ne, das Problem verbleibt dasselbe wie oben beschrieben. Ich verändere eine exe-Datei. Diese Dateien sind relativ sensitiv, was Veränderung angeht. Wenn man sie falsch verändert, funktionieren sie nicht mehr richtig. Nun erkennt Windows, dass die Datei nicht ihrem Format entspricht, so dass es mir einen Fehler ausgibt (obwohl die Programmfunktionalität noch gegeben ist). Die exe macht nichts weiter als den Datenblock auszulesen. Es versucht sich nicht zu verändern. Den Fehler hab ich nicht einmal beim Projektstart gemacht. Ihr müsst einfach genauer lesen oben. Aphton be-/umschreibt nur, was ich bereits gemacht habe.
Das Problem ist nicht Windows, sondern meine dem Format nicht entsprechende Veränderungen.

Aphton 12. Sep 2011 17:33

AW: exe-Files, Datenblock unterbringen
 
Du bist so ignorant.
Ich deute extra indirekt darauf hin, dass du Code zeigen sollst, aber du verstummst und bleibst bei dem, dass es an Wnidows liegt usw.
So vergeht mir die Lust, dir zu helfen.

Ich habe schon 3 x beschrieben wie es PRAKTISCH funktioniert (umgesetzt!!! in meinem Projekt).

-.-'

Edit: Sry für den harten Ton.

Cicaro 12. Sep 2011 19:03

AW: exe-Files, Datenblock unterbringen
 
Zitat:

Zitat von Aphton (Beitrag 1123737)
Du bist so ignorant.
Ich deute extra indirekt darauf hin, dass du Code zeigen sollst

Ich benutze mal eine Metapher um es deutlich zu machen:
Die Exe ist eine junge, hübsche Frau. Der Datenblock ist ein Kind. Und ich bin ein 21-jähriger, der sie damit schwängern will. Das Problem ist, die richtige Öffnung zu finden. Durch den Mund oder durch das Arschloch geht das bekanntlich nicht. Also muss man das richtige Loch suchen um ihr den Braten in die Röhre zu schieben.

Ich dachte einer weiß vielleicht, wie man das mit den exes handhaben kann, oder kann mir Links zum Nachschlagen geben. Um den Code gehts hier gar nicht, nur um die Datei, die bearbeitet werden soll. Und es steht jetzt irgendwie 4 mal da!!

Aphton 12. Sep 2011 19:10

AW: exe-Files, Datenblock unterbringen
 
Lol..

Ok, können wir das Ganze nochmal von vorne angehen?
Also du wilslt an eine Exe Daten anhängen, die du aus derselben zur Laufzeit wieder extrahieren kannst.
Die Frage, ob dies von dieser Exe vonstatten gehen soll, ist irrelevant (just in case).

Hier stehts ganz genau wie es funktioniert.

Könntest du mich bitte korrigieren sodass ich dir besser helfen kann?

Achja noch etwas - dies wurde von mir persönlich implementiert - es funktioniert auch bei sensiblen Daten! Hashvergleich zeigt, dass es OK ist!

Your turn

WM_CLOSE 12. Sep 2011 19:12

AW: exe-Files, Datenblock unterbringen
 
http://de.wikipedia.org/wiki/Portable_Executable
Das müsste dir helfen.
Es dreht sich um die Segmentgröße

Aphton 12. Sep 2011 19:19

AW: exe-Files, Datenblock unterbringen
 
Nett aber völlig daneben. Das was er tun will, hat etwas mit Filehandling zu tun und ist sehr einfach zu realisieren!

Cicaro 12. Sep 2011 19:52

AW: exe-Files, Datenblock unterbringen
 
Zitat:

Zitat von Aphton (Beitrag 1123664)
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!

Wenn du es so willst, ist DAS schon mal falsch oder falsch ausgedrückt.

Packer A + Entpacker B + Daten C
  • A soll an B die Daten C anhängen können.
  • B allein macht nix.
  • B, welches mit C ausgestattet ist, kann C wieder entpacken.

Problem nur: wo tut A bei B die C hin ? Ich brauche im Grunde nur den Offset vom Dateianfang. Der Rest erledigt sich in wenigen Minuten. Der Offset wird variieren bzw. muss einfach berechnet werden und evtl. müssen die Tabellen in B modifiziert werden, wenn C inmitten von B landen "muss". Sobald ich den Offset berechnen kann, kann ich auch B beibringen C zu finden.

Aphton 12. Sep 2011 20:32

AW: exe-Files, Datenblock unterbringen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Probier mal diese kleine Demo aus. Falls das Verhalten deinen Wünschen entspricht, dann tu das, was ich dir geschrieben habe.

Bedienung:
- auf den Packer eine beliebige Datei droppen
- im selben Pfad der gedroppten Datei wird eine neue Datei erzeugt
- doppelklick auf diese neue Datei entpackt den Inhalt!

Meine AV Software (Avira AntiVir) meldet mir, dass es sich dabei um einen Virus handelt. Falscher Fund - das, was da geschieht, sollte man sowieso nicht wirklich machen -> Daten an Win-Executables anhängen!

CCRDude 13. Sep 2011 14:20

AW: exe-Files, Datenblock unterbringen
 
Geht das ganze vielleicht auch etwas freundlicher und weniger vulgär und beleidigend?

Der Tipp mit dem PE-Format war etwa keinesfalls "total daneben". Total daneben ist etwa, etwas von Filehandling zu erzählen aber zu behaupten, daß beim Umgang von Dateien deren Format völlig unwichtig wäre.

Und auch wenn ich Aphton aufgrund seines Tonfalls nur ungern recht gebe - Source-Ausschnitte zu zeigen würde doch ungemein helfen, denn wenn mehrere Leute behaupten, daß die beschriebene "Technik" eigentlich funktioniert (ich mache das auch), liegt es wohl an Deiner Implementierung, wenn es nicht geht. Ausnahmen wären etwa codesignierte Dateien - daß die nicht nachträglich so einfach modifizierbar sind, sollte klar sein.

Cicaro 13. Sep 2011 16:37

AW: exe-Files, Datenblock unterbringen
 
Total daneben ist vor allen Dingen am Thema vorbei zu reden.
Source Code ist hier nicht das Problem. Aber alle scheinen zu glauben hier geht es um irgendwelche Viren, Trojaner etc. und wollen Code sehen. Andere versuchen eigene Viren zu verteilen ...
Also Thema meinetwegen schließen. Ich habe eh eine andere Fährte zur Problemlösung aufgenommen.

himitsu 13. Sep 2011 17:15

AW: exe-Files, Datenblock unterbringen
 
Zitat:

Zitat von Cicaro (Beitrag 1124090)
Aber alle scheinen zu glauben hier geht es um irgendwelche Viren, Trojaner etc. und wollen Code sehen.

Wo wurde denn das behauptet?

Zitat:

Zitat von Cicaro (Beitrag 1124090)
Total daneben ist vor allen Dingen am Thema vorbei zu reden.
Source Code ist hier nicht das Problem.

Wie schon gesagt wurde, funktioniert dieses und wenn du behautest es ginge nicht, dann wäre es auch praktisch, wenn du das "beweisen" würdest.

Die Bitte nach dem Code war nur deswegen, um schauen zu können, warum es bei dir nicht geht.


Aber gesagt, am besten mit dem PE-Format zusammenarbeiten tun die Resourcen, denn schließlich sind die ja genau für sowas gebaut.
Auslesen kann man die dann z.B. ganz einfach mit dem Delphi-Referenz durchsuchenTResourceStream und zum Beschreiben eben über die API (OK, notfalls könnte man sich das Schreiben auch in einer Streamklasse kapseln)

rollstuhlfahrer 13. Sep 2011 17:44

AW: exe-Files, Datenblock unterbringen
 
Zitat:

Zitat von Cicaro (Beitrag 1124090)
Also Thema meinetwegen schließen. Ich habe eh eine andere Fährte zur Problemlösung aufgenommen.

Man wollte dir ja nur helfen. Es gibt übrigens im Internet komplett fertige Lösungen, z.B. bei den Schweizern.

Bernhard

Aphton 13. Sep 2011 19:18

AW: exe-Files, Datenblock unterbringen
 
Zitat:

Total daneben ist vor allen Dingen am Thema vorbei zu reden.
Source Code ist hier nicht das Problem. Aber alle scheinen zu glauben hier geht es um irgendwelche Viren, Trojaner etc. und wollen Code sehen. Andere versuchen eigene Viren zu verteilen ...
Also Thema meinetwegen schließen. Ich habe eh eine andere Fährte zur Problemlösung aufgenommen.
Habe ich am Thema vorbei geredet?
Habe ich impliziert, dass DU damit Böses anstellen willst?
Wollte ich deswegen Code sehen?

Du unterstellst mir direkt solche Sachen. Ich wollte dir helfen (egal in welchem Tonfall); habe dir sogar extra ne Demo angefertigt, um zu sehen, ob es DAS ist, was du willst! Ich habe versucht, dich zu verstehen.

Du hast dich nicht kooperativ verhalten -.-'

Zitat:

Geht das ganze vielleicht auch etwas freundlicher und weniger vulgär und beleidigend?

Der Tipp mit dem PE-Format war etwa keinesfalls "total daneben". Total daneben ist etwa, etwas von Filehandling zu erzählen aber zu behaupten, daß beim Umgang von Dateien deren Format völlig unwichtig wäre.
Klar. Aber wenn einer Hilfe verlangt und keine Informationen preisgibt, bleibt die Höflichkeit meinerseits auf halber Strecke!

Es war total daneben. Das einzige, was mit dem "PE" zu tun hätte, wäre, dass man den Extractor als "Resource" an den Packer anhängt.
Wissen muss man aber trotzdem nicht, wie die PE Struktur intern aussieht bzw. die man Daten per Hand in die <Resource Table> einfügt.
Es geht ohne.
Alles andere IST Filehandling.
Man öffnet Streams, extrahiert Daten, fügt Daten hinzu, speichert -> Filehandling bzw. Streamhandling.

Cicaro 18. Sep 2011 01:01

AW: exe-Files, Datenblock unterbringen
 
Interessiert bestimmt niemanden aber:
Zitat:

Zitat von himitsu (Beitrag 1124105)
Wie schon gesagt wurde, funktioniert dieses und wenn du behautest es ginge nicht, dann wäre es auch praktisch, wenn du das "beweisen" würdest.

Die Bitte nach dem Code war nur deswegen, um schauen zu können, warum es bei dir nicht geht.

Es ging bei mir von Anfang an. Was mir misfallen hat, war dass es eine unsaubere Vorgehensweise ist und Windows mir zusätzlich einen kleinen Fehler ausspuckt.

Zitat:

Zitat von Cicaro (Beitrag 1123601)
Ich habe bereits versucht den Datenblock ans Dateiende zu schreiben. Die exe bleibt ausführbar. Jedoch schließt sie mit einem Fehler.

Habs wohl nicht deutlich genug erklärt: Fehler kommt beim --->>> WM_CLOSE <<<--- (hab auch hinzugefügt gehabt, dass die Funktion des Programmes noch geliefert wird)

Achja, da ich gerade beim WM_CLOSE bin: WM_CLOSE hatte als einziger den genau richtigen oder ansatzweise hilfreichen Wink gegeben, auch wenn ich es nicht sofort gecheckt habe. Tschuldigung und danke!

himitsu 18. Sep 2011 12:15

AW: exe-Files, Datenblock unterbringen
 
Zitat:

Zitat von Cicaro (Beitrag 1125082)
Es ging bei mir von Anfang an. Was mir misfallen hat, war dass es eine unsaubere Vorgehensweise ist und Windows mir zusätzlich einen kleinen Fehler ausspuckt.

Also ging es doch nicht (richtig).

Luckie 18. Sep 2011 12:52

AW: exe-Files, Datenblock unterbringen
 
also IN die Exe dürfte etwas schwierig werden: Datei vergrößern, Code nach hinten schieben, Optcode des Einsprungpunktes neu berechnen. Hinten anhängen ist kein Problem mit zwei Programmen wie es schon erklärt wurde. Selbstextrahierende Archive machen es nicht anders. Da wird mit Hilfe eines zweiten Programms an den Entpacker die Daten drangehangen. Siehe dazu meine SFXTools: http://www.michael-puff.de/Programmi...lphi/Programme

Cicaro 18. Sep 2011 18:19

AW: exe-Files, Datenblock unterbringen
 
Das Problem ist gelöst. Ich habe mich durch den Aufbau einer exe durchgeboxt und füge einen dem Format entsprechen Block in die exe ein. Wer es auch richtig machen will, sollte auf WM_CLOSE hören. Ich machs übrigens mit 1 Programm nicht mit 2.

Luckie 18. Sep 2011 18:56

AW: exe-Files, Datenblock unterbringen
 
Die Benutzer werden es dir danken, wenn an dauernd ihr Virenscanner anschlägt.

Cicaro 19. Sep 2011 13:26

AW: exe-Files, Datenblock unterbringen
 
Habs durch VirusTotal durchlaufen lassen und keiner der 44 Virus Scanner hat angeschlagen. HÄTTE einer angeschlagen, wäre das auch für mich nicht akzeptabel gewesen.
Naja ich bin zufrieden, weder ich noch Windows noch mein AntiVir meckern. :thumb:

Aphton 19. Sep 2011 13:28

AW: exe-Files, Datenblock unterbringen
 
Nur um es mal klar zu stellen: bei der Demo, die ich hochgeladen habe, wurde nur gemeckert, weil die Heuristik gesehen hat - nur die eine Funktionalität - da ist was fischig.
Bei meinem aktuellen Projekt (größer) wird auch nicht rumgemeckert seitens AVs

Luckie 19. Sep 2011 14:15

AW: exe-Files, Datenblock unterbringen
 
Zitat:

Zitat von Cicaro (Beitrag 1125321)
Habs durch VirusTotal durchlaufen lassen und keiner der 44 Virus Scanner hat angeschlagen. HÄTTE einer angeschlagen, wäre das auch für mich nicht akzeptabel gewesen.
Naja ich bin zufrieden, weder ich noch Windows noch mein AntiVir meckern. :thumb:

Du weißt aber dass sich mache Virenscanner die ursprüngliche Größe merken?

WM_CLOSE 19. Sep 2011 18:05

AW: exe-Files, Datenblock unterbringen
 
Endgültige Antwort kann nur der (Langzeit)Test mit mehreren unabhängigen AV Programmen geben. Also 15 VMs + AV Prog aufsetzen und 10 Tage durchtesten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz