Entwickler-Ecke

Windows API - Daten in der Mitte einer Exe "verstecken"


FloFri - Do 20.03.03 13:10
Titel: Daten in der Mitte einer Exe "verstecken"
Hi!
Ich wollte mal fragen, ob es möglich ist Daten auf Byte-Ebene in der Mitte einer Exe-Datei zu verstecken? Dass es (fast) ohne Probleme am Ende geht weis ich, aber ich würde die gerne so zu sagen "zwischen den Zeilen" verstecken.
Geht das und wenn ja, wie mache ich das am einfachsten?

MfG
FloFri


Andreas Pfau - Do 20.03.03 17:52

Also, in der Mitte sind ja die Daten, also ASM. Außerdem in der EXE: Ressourcen. gut, soweit ich weiß sind die am Anfang, aber versteck's doch dadrin. z.B. kannst du mit Steganographie irgendwelche Daten in Ressourcen-Bitmaps verstecken.


FloFri - Do 20.03.03 20:01

ressourcen sind auch am ende. habe mal was von so genannten daten-löchern gehört, die in den exe-dateien sind, zum beispiel zwischen dem dos-stub und dem hauptcode ist eines. Ich müsste nur wissen, wie man die findet.


Andreas Pfau - Do 20.03.03 20:10

Also, da bin ich ein Laie. Aber unter http://www.wotsit.org/ gibt's eine Auflistung etlicher Dateiformate, u.a. dem EXE-Format. Da findest du evtl. was darüber, wenn auch meistens in Englisch.


MSCH - Do 20.03.03 21:36

*brrrr*
Win 32 Dateien, sogenannte PE's können nicht einfach in der mitte aufgesplittet werden, und Daten reingeschrieben werden. Da diese Dateien segmentiert werden und am Anfang (Header) die einzelnen Offsets stehen, glaub ich kaum, dass die Win-dose begeistert darüber sein wird, wenn es statt einem Sprungbefehl, ein mit steganographie verrödelte nackte Weiblichkeit als Bitmap findet. (würd mich mal interessieren, was da pssiert *grübel*LOL*).
In alten DOS-Zeiten hat man das immer so geregelt, dass man im Code selber:
const
VarFindID='1212121212'
VarFindData='meine externen Daten stehen hier'
VarFindDataEndID='3232323232'
geschrieben hat, und die Anwendung in der ExeDatei nur den ID suchen musste und man kann dann mit diesem Offset den String(oder die Daten) VarfindData in der Exe-Datei selber modifizieren.
Geht leider nicht mehr. Windows verbietet einer laufenden Anwendung, ihren eigenen Code zu beschreiben.
Grüße
MSCH


Andreas Pfau - Do 20.03.03 21:48

Dann.. eine ziemlich triviale Lösung: Speicher die Daten also Konstante, z.B. als Byte-Array. Dann kannst du die Daten z.b. via RegisterwindowMessage() und PostMessage() oder via DDe übertragem.

@MSCH:
Zitat:
Win 32 Dateien, sogenannte PE's können nicht einfach in der mitte aufgesplittet werden, und Daten reingeschrieben werden. Da diese Dateien segmentiert werden und am Anfang (Header) die einzelnen Offsets stehen, glaub ich kaum, dass die Win-dose begeistert darüber sein wird, wenn es statt einem Sprungbefehl, ein mit steganographie verrödelte nackte Weiblichkeit als Bitmap findet. (würd mich mal interessieren, was da pssiert *grübel*LOL*).

Glaubst du etwa, ich würde das Bitmap irgendwo in's PE-Image streamen? die Rede war von Ressourcen, und ich dachte, dass man einach 'ne Ressource einbindet, und das ganze mittels Steganographie, damit's schwerer zu finden ist (für Hacker -> Datenschutz!!!). Oder wie war das gemeint?


MSCH - Do 20.03.03 21:56

Zitat:
Verfasst am: Do 20.03.03 10:10 Titel: Daten in der Mitte einer Exe "verstecken"

--------------------------------------------------------------------------------

Hi!
Ich wollte mal fragen, ob es möglich ist Daten auf Byte-Ebene in der Mitte einer Exe-Datei zu verstecken? Dass es (fast) ohne Probleme am Ende geht weis ich, aber ich würde die gerne so zu sagen "zwischen den Zeilen" verstecken.
Geht das und wenn ja, wie mache ich das am einfachsten?


Sorry aber dann ist die Frage etwas falsch gestellt.
grez
MSch


Andreas Pfau - Do 20.03.03 22:02

Tja, kann sein, egal.


tommie-lie - Fr 21.03.03 22:01

mal nur so als Einfwurf: Ist Steganographie nicht auf Bilder beschränkt? Ich kenne das Verfahren nur, um alle möglichen Dateien innerhalb von Bildern zu verstecken, nicht in jeder beliebigen Datei. In Bildern funktioniert das vermutlich durch Bildfehler, die dem menschlichen Auge kaum auffallen. Ich habe noch nie davon gehört, das Steganographie auch auf Nicht-Multimedia-Formate (bei Musikdateien geht's glaub' ich auch) anzuwenden ist. Oder liege ich da falsch?


Andreas Pfau - Fr 21.03.03 22:18

100 Punkte! Mein Gedankengang war auch nicht, die Daten "irgendwo reinzuwurschteln", sondern ganz "legal" eine Bitmap-Ressource einzubauen, in der vie Steganographie die Daten enthalten sind. Steganograophie verändert die LSB (least significant bits) der Pixel. Das nimmt kein Auge Wahr! Außer ein Algo, denn der ASCII-Code für Buchsctaben endet immer mit 0, da müsste man sich was einfallen lassen, ums 110%ig sicher zu machen.


tommie-lie - Fr 21.03.03 22:28

Und ich glaube, die Anzahl an Infos, die per Steganographie in ein Bild passen, ist begrenzt. Also müsste die EXE Bitmap-Ressourcen in ausreichender Menge/Größe beistzen und man müsste wissen, wie man da ran kommt. Denn wenn ich die Frage richtig verstanden habe geht es um beliebige EXEs, nicht um eigene (oder?). Also müsste man eigentlich ein "Nein" als Antwort geben, da man nicht pauschal sagen kann, daß man alle benötigten Infos in eine EXE bekommt. Außerdem muss man wissen, wie man an die Ressourcen (die ja bereits in die EXE kompiliert sind) rankommt. Ich würde sagen, das ghet nur mit Bildern, nicht mit EXEs...


Andreas Pfau - Fr 21.03.03 22:37

War halt nur so 'ne Idee...


FloFri - Sa 22.03.03 11:16

ich mein schonmal ein programm gesehen zu haben, was auch in exen verstecken kann, ich schau mal, ob ich das finde.

Es gibt diese "Datenlöcher" das sind bereiche, die bei der Ausführung durch jumps übersprungen werden. So zum Beispiel der Ungenutze Dos-Stub, Probierts auch, am anfang der Exe ist ein grosser bereich mit 00 da könnt ihr reinschreiben, was ihr wollt und das Prog funzt immer noch, aber ich weis nicht, wie ich andere "Löcher" finden kann.


recall - So 10.08.03 14:53

Hallo,

Das mit den Datenlöchern ist aber ziemlich begrenzt (Datenmenge).

Machs doch wie einige Viren: Jumper finden, umleiten, eigenes Programm als "Virus" einpflanzen und wieder weiterjumpen !!!

In deinem Prg die Daten zu verstecken ist dann ja nicht mehr schwer :)

Viele Grüsse.


Anonymous - So 10.08.03 17:47

Erstmal klare Aussage bitte: Guest-Binärdatei in Bitmap verstecken und diese in die Host-EXE oder wie?

In diesem Falle mußt du einfach nur die Bitmap binär laden (FindResource etc) und dann die Guest-Daten extrahieren. Ist also kein Problem. Ich binde es immer direkt als Ressource ein (Beispiel dazu ist BINRES in meinem Hooktutorial).

Viren hängen meist Code an, ändern den Eintrittspunkt und benutzen dann selbstreferenzierenden Code. Danach wird zum eigentlichen (ursprünglichen) Eintrittspunkt gesprungen und die "EXE" ausgeführt.