Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Elvis

Anmeldungsdatum: 01.06.2006 Beiträge: 818 Wohnort: Deutschland, BW
|
Verfasst am: 26.08.2006, 20:15 Titel: File in EXE einbinden |
|
|
Moin, moin!
Weiß jemand, ob es möglich ist, eine normale Datei (z.B. *.txt) wie eine Bibliothek in
eine EXE-Datei einzubinden (also so, dass man sie nicht sieht)?
Danke im vorraus
Grüße, Elvis _________________ Geforce 7300GT (256MB GDDR3, Gainward) -- 2x 512MB (DDR2 800, MDT) -- AMD Athlon64 X2 EE 3800+ -- Asrock ALiveNF5-eSATA2+ |
|
Nach oben |
|
 |
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 26.08.2006, 20:23 Titel: |
|
|
Also nein .. wirklich mitm Linker in die EXE einbinden geht meines Wissens nicht.
Aber mit DATA geht das z.B. ..
Code: |
RESTORE IrgendwelcheDaten
READ bla$
IrgendwelcheDaten:
DATA "qwertzuiop"
|
_________________
 |
|
Nach oben |
|
 |
Lutz Ifer Grillmeister

Anmeldungsdatum: 23.09.2005 Beiträge: 555
|
Verfasst am: 26.08.2006, 20:48 Titel: |
|
|
für fb gibt es da ein tool namens "bin2bas", das komplette dateien in solche "DATA"-Blöcke verwandelt.
unter windows (bei linux hab ich keine ahnung) gibt es auch noch die möglichkeit, bestimmte daten wie beispielsweise grafiken wie bmp-dateien als ressourcen mit in die exe-datei einzubinden. diese dateien können dann allerdings nur über die winapi verfügbar gemacht werden, was für anfänger sicherlich nicht ganz einfach ist, aber die sauberste lösung darstellen sollte.
wenn ich die zeit finde (welch fromme hoffnung) schreib ich nen kapitel oder zwei in meinem tutorial zur winapi unter http://lutzifer.freebasic.de/winapi/ .
Gruß
Lutz Ifer _________________ Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 26.08.2006, 21:43 Titel: |
|
|
eine möglichkeit wäre, dass du einen "overloader" verwendet, der die daten an die exe anhängt, danach kommt noch eine zahl, die das startbyte angibt. dann liest du diese datei von dem startbyte aus ein. falls du interesse an dieser methode hast, aber nicht genau weißt, wie du das anstellen sollst, mail mir, ich hab so ein programm geschrieben  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 26.08.2006, 22:02 Titel: |
|
|
@Jojo: Aaaber funtioniert das auch in 100% der Fälle?
EXE-Datein werden ja etwas komplexer in den Speicher geladen als dass einfach die Datei Byte für Byte linear in den Speicher geschrieben wird..
normal müsste man dann auch noch den EXE-Header ändern um sicher zu gehen,
dass auch das Angehängte geladen wird. Oder?  _________________
 |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 26.08.2006, 23:37 Titel: |
|
|
Wenn man unter Windows bei NTFS bleibt, dann sollte das hier kein Problem sein:
ADS
Ich habe das noch nicht getestet(bin gerade unter linux) aber ich denke mal, das geht ganz einfach.
Wenn ich das richtig verstanden habe, dann geht das so(Beispiel):
Code: | Open "prog.exe:bla.txt" for input as #1 |
prog.exe ist die Anwendung, und bla.txt die datei, die versteckt an der exe dranhängt. |
|
Nach oben |
|
 |
Manuel

Anmeldungsdatum: 23.10.2004 Beiträge: 1271 Wohnort: Bayern
|
Verfasst am: 27.08.2006, 00:33 Titel: |
|
|
programmierer hat Folgendes geschrieben: | Wenn man unter Windows bei NTFS bleibt, dann sollte das hier kein Problem sein:
ADS
Ich habe das noch nicht getestet(bin gerade unter linux) aber ich denke mal, das geht ganz einfach.
Wenn ich das richtig verstanden habe, dann geht das so(Beispiel):
Code: | Open "prog.exe:bla.txt" for input as #1 |
prog.exe ist die Anwendung, und bla.txt die datei, die versteckt an der exe dranhängt. | Unter QB funktioniert das allerdings nicht. Wenn ich an prog.exe eine Datei mit Text anhänge, kann jedes Windowsprogramm (z. B. Notepad) ohne Probleme darauf zugreifen, unter QB funktioniert das mit dieser Methode leider nicht... Außerdem darf man nicht vergessen, dass man durch diese Methode automatisch alle Win9x-Systeme ausschließt... Man kann ja IMHO kaum von den Usern verlangen, ein DOS(!)-Programm unter NTFS(!)-Laufwerken ausführen zu müssen... Das sind zwei unterschiedliche Welten^^...
EDIT: As say, unter QB funktioniert das nicht, mit FB habe ich es noch nicht getestet...
EDIT²: Ok, unter WinXP bekommt man dann doch noch eine Info mitgeteilt, dass beim Kopieren von Daten mit Streams auf eine FAT32-Partition Daten verloren gehen. Ich glaube aber kaum, dass Win9x auf derartiges hinweisen wird. Auch ein Code: | open "prog.exe:bla.txt:$DATA" | (so wird es unter NT u. XP verwaltet) bleibt wirkungslos, das Programm stürzt mit "unzulässiger Dateiname im Modul" ab...
By the way habe ich gerade herausgefunden, das Streams in Dateien es nicht überleben, wenn sie von einem Packprogramm (bspw. WinRar) gepackt werden; sobald man sie packt und dann wieder an neuer Stelle entpackt, sind die Infos in der neuen Stelle weg... Ergo: Kaum "massenmarkttauglich". _________________ DL Walk (Denkspiel) | DL Malek (Denkspiel) | DL Warrior (ASCII-Adventure) | DL Sokodos (Sokoban-Klon)
---
www.astorek.de.vu |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 27.08.2006, 10:37 Titel: |
|
|
ICC hat Folgendes geschrieben: | @Jojo: Aaaber funtioniert das auch in 100% der Fälle?
EXE-Datein werden ja etwas komplexer in den Speicher geladen als dass einfach die Datei Byte für Byte linear in den Speicher geschrieben wird..
normal müsste man dann auch noch den EXE-Header ändern um sicher zu gehen,
dass auch das Angehängte geladen wird. Oder?  |
Der an die EXE Datei angehängte Datenteil stört weder Windows noch DOS. Er ist für die Funktion der EXE-Datei erst mal irrelevant und beeinträchtigt die Ausführung nicht. Wenn man an diese Daten herankommen möchte, muss man den Pfad und Dateinamen der eigenen EXE herausfinden und diese anschließend BINARY öffnen. Dann SEEKt man zu dem Offset, wo der Programmteil endet und liest ab da die Daten ein. Eine einfache Variante ist, in dem Stubprogramm (der Programmteil von dem Paket) am Anfang Folgendes zu schreiben:
Hängt man dann mit einem anderen Programm an dieses Stub die Daten an, so ersetzt man in der EXE die Zeichenfolge off$ (ist als Klartext in der EXE erkennbar) mit STR$(LOF(Stub)). Das Stubprogramm kann dadurch seine Länge mit VAL(off$) abfragen. _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 27.08.2006, 11:21 Titel: |
|
|
@Sebastian: Ist klar dass das angehängte den Programm und Datenfluss nicht stört.
Aber ich mache mir sorgen dass der angehängte Teil auch wirklich in den Speicher geladen wird.
Weil eigentlich müsste man bei verändern (vergrößern) der EXE auch noch den EXE-Header ändern. _________________
 |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 27.08.2006, 14:13 Titel: |
|
|
Achsoo xD verstehe .. so gehts natürlich auch  _________________
 |
|
Nach oben |
|
 |
|