Datei in .exe einbetten
-
Ähm, ausführbare Dateien, die du nicht kennst oder den du nicht vertraust, solltest du sowieso nicht öffnen, geschweige denn Passwörter eingeben
War bei irgendeiner Heft-CD dabei. Das ist schon so lange her, dass es sogar die ComputerBild gewesen sein kann :DD
Soweit ich weiß, können ausführbare Dateien keine anderen Dateien speichern. Die verschlüsselte Datei ist, denke ich, auf einem anderen Weg dorthin gekommen sein (Internet?). Bist du dir sicher, dass es dieselbe Datei war, die du auf dem ersten Rechner hattest? Hast du nur die Exe verschoben und nichts anderes?
Das ist eigentlich auch mein Wissensstand. Daher die Frage.
Ich bin mir sehr sicher, dass es keine Möglichkeit gab, wie die datei mit darüber gekommen ist. Zudem wurde nur die .exe verschoben. Kein ganzes verzeichnis, keine versteckten Dateien ...
-
Wenn man weiß wie das Binärformat der vorliegenden Datei funktioniert und dieses Ressourcen/eine ähnliche Funktion unterstützt, ist das Programm doch völlig problemlos.
-
Wenn man weiß wie das Binärformat der vorliegenden Datei funktioniert und dieses Ressourcen/eine ähnliche Funktion unterstützt, ist das Programm doch völlig problemlos.
Eine Erklärung bitte!?
-
questioner schrieb:
Eine Erklärung bitte!?Ich weiß nicht genau wie das mit den Windows Ressourcen funktioniert, aber wenn du dir mal ein einfaches Format vorstellst, das einfach vom ersten Byte an anfängt Code auszuführen und erst stoppt, wenn es auf einen bestimmten Befehl trifft, kannst du doch hinten alles Mögliche dran kopieren. (Man müsste halt noch irgendwie die Größe speichern, aber das sollte natürlich auch kein Problem sein, überschreibt man halt an irgendeinem festgelegten Offset.)
In .jpg Dateien kannste z.B. auch allen möglichen Kram stecken, die Dinger funktionieren aber ganz normal weiter.

-
@TE
Und wenn du es ganz simpel haben willst, dann füge die Daten an die Exe binär hinzu. Dann z. B. die letzten 200 Bytes der exe als Inhaltsverzeichnis reservieren (bei welchem Offset fangen die Daten an und wie lange sind diese) und schon kannst du aus deiner kleinen Exe ein eigenes Datenarchiv machen, dass nur bei Eingabe eines bestimmten Wortes extrahiert wird
-
Man kann die Resourcen einer Windows-Anwendung manipulieren,
sieher hier.Speziell die Funktionen BeginUpdateResource, UpdateResource und EndUpdateResource
dürften hier interessant sein.Ob das Programm sich selbst zur Laufzeit manipulieren kann ist eine andere Frage.
Da kannst du einfach nur mal probieren, ob du an den Resourcen des eigenen Programms rumhantieren kannst.Alternativ könnte man sich vorstellen, dass das Programm nicht sich selbst bearbeitet hat, sondern evtl. so vorging:
1. einzubettende Datei in Puffer einlesen
2. Datei löschen
3. Kopie von sich selbst anlegen mit Namen der anderen Datei
4. Den Dateiinhalt aus dem Puffer in eine Resource der neuen Datei schreiben
5. Die neue Datei mit einem speziellen Parameter aufrufen, sodass der neu gestartete Prozess wartet,
bis der erste Prozess beendet wurde und dann die alte Anwendung ebenfalls entfernt.Ist allerdings nur eine Idee, wie man evtl. aus zwei Programmen eins machen könnte...
-
shadow schrieb:
und schon kannst du aus deiner kleinen Exe ein eigenes Datenarchiv machen
Eine exe ist doch auch nur ein Archiv. Wie jedes andere, bis auf die Tatsache, dass Windows halt bestimmte Dateien in diesem Archiv auswertet und dann den Code, der in einer Datei in dem Archiv liegt, ausführt. Ich weiss nur nicht, wie es sich mit fremden dateien verhält, ob man diese einfach so hinzufügen kann und das Programm dann noch läuft, oder wie das geregelt ist. Dafür müsste man einfach mal ne Doku lesen, oder testen. Wobei Doku lesen bei Microsoft Produkten ja immer so ne Sache ist...

DrakoXP schrieb:
Ob das Programm sich selbst zur Laufzeit manipulieren kann ist eine andere Frage.
Das sollte auch kein Problem sein, das Programm ist ja komplett im RAM, desshalb sollte dies, solange keine Daten dynamisch aus der exe nachgeladen werden, auch möglich sein, es sei denn, Windows lockt die exe, solange sie ausgeführt wird.
Wie gesagt, einfach ausprobieren, oder Doku lesen.
-
Es geht durchaus, wenn man Daten binär an eine Exe einfach ranhängt (Das letzte Byte der Anwendung ist auch das offizielle Ende des ausführbaren Programmcodes nach der PE-Spezifikation. Alles was danach kommt wird einfach ignoriert.). Hatte ich damals auch mal programmiert. Damals wurde der Datenstrom vorher gepackt und verschlüsselt, damit auch die Hobby-Code nicht so leicht rankamen.
Die Viren-Scanner sind auch nicht auf die Modifikationen angesprungen. Weiß aber nicht, wie das heute der Fall ist, weil die ja schon bei fast Allem anspringen was ihrer Meinung nach wie Grippe riecht
Zu den Ressourcen:
Ist auch eine gute Möglichkeit, wobei das nachträgliche Bearbeiten (ändern, löschen, hinzufügen) von Ressourcen aufwendiger wird. Zudem muss man die Daten wiederum verschleiern, weil die Ressourcen sehr leicht ausgelesen werden können, d. h. kein Schutz vor ungewolltem Zugriff.
-
Eigentlich ist das ganze noch einfacher. Zieht mal eine *.txt Datei auf notepad.exe, dann seht ihr was passiert. Windows öffnet das Programm (auf dem die Textdatei gezogen wird) mit der Textdatei. Genauso lief es auch mit dem Programm vom TE.
Es handelte sich dabei einfach um so etwas einen Packprogramm (so wie WinRar). Gepackte Archive kann man in Winrar (und auch in anderen Packern) mit einem Passwort schützen und als "Selbstextrahierende Archive" speichern (exe). Zieht man also eine beliebige Datei auf die exe vom TE, dann wird diese ausgeführt und fragt das Passwort ab mit dem die Datei verschlüsselt werden soll. Anschließend packt das gestartete Programm seine originale exe und die Datei in ein selbstextrahierendes Archiv und löscht die originale exe.
Führt man das dann auf einem anderen Rechner aus, dann wird das Archiv einfach nach der Passwortabfrage entpackt.
-
Keine Magie, kein Binärgefrickel... sondern möglicherweise sogar saubere Programmierung

-
@chris++@offline
Stimmt, jetzt erinnere ich mich
Bei WinZip konnte man sogar noch das Icon der Exe angeben und ob ohne Rück-/Statusmeldung entpackt und das Originalarchiv gleich gelöscht werden soll.
Manchmal sieht man den Wald vor lauter Bäumen nicht