 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Dominik
Anmeldungsdatum: 22.12.2004 Beiträge: 172
|
Verfasst am: 31.12.2005, 17:12 Titel: Daten an Executable anhängen |
|
|
Hallo alle zusammen!
Ich versuche gerade eine Art Selbstextrahierer zu programmieren und mir ist aufgefallen, dass ich nicht ohne weiteres Text an eine Anwendung anhängen kann. Ist es trotzdem irgendwie möglich?
Viele Grüße und einen guten Rutsch! |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 31.12.2005, 17:24 Titel: |
|
|
Hallo.
Natürlich kann man an eine Anwendung beliebige Daten dranhängen. Das darfst du aber nicht im Notepad machen ( ), sondern musst das entweder mit einem selbstgeschriebenen Programm im BINARY Modus oder mit einem Hexeditor erledigen. Ich für meinen Fall habe schon in QuickBASIC und FreeBASIC Self-Extracting-Archives bzw. Maker dafür geschrieben. Es geht also! Du musst dir aber unbedingt einen Aufbau der Datenpakete überlegen, die du hinten dranhängst, bevor du mit Programmieren loslegst. Die Länge des Datenblocks, evtl. die Originaldateidatumsangaben etc.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 31.12.2005, 17:52 Titel: |
|
|
Witzig wird es wenn man das Programm weiter entwickelt, und man hat keinen Platz vorgesehen , man kann aber z.B. 10% der Ursprungsgrösse der Exe-Datei als Reserve einrechenen, das reicht zwar kaum für neue Funktion, aber immerhin gut für Bugfixes. _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
Dominik
Anmeldungsdatum: 22.12.2004 Beiträge: 172
|
Verfasst am: 31.12.2005, 17:57 Titel: |
|
|
Danke für die schnelle Hilfe!
Dachte, dass würde nicht gehen, nachdem ein QBasic-Programm sich bei mir danach einfach aufgehängt hat....
Gibt es bei einer Exe eigentlich eine Standartendung?
Sodass man beim Extrahierungsvorgang nach einer Zeichenfolge in der Anwendung suchen kann und ab da dann nach einem Schema extrahiert. |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 31.12.2005, 18:16 Titel: |
|
|
Eine EXE Datei ist erst mal eine ganz normale Datei.
Beispiel Loader mit angehängten Daten:
Code: | - z.B. 60kB Programmdaten der EXE-Datei
- Eigentliches Ende der EXE-Datei
- Markierung <BeginOfDataHere>
- 2 Bytes, (unsigned) Integer, Länge des Dateinamens
- Dateiname, variable Länge
- 4 Bytes, (unsigned) Long, Länge der Datei
- Dateiinhalt, variable Länge |
Das Packprogramm würde wie folgt aussehen:
Code: | OPEN "SELFEXTR.EXE" FOR OUTPUT AS #1: CLOSE #1
OPEN "VORLAGE.EXE" FOR BINARY ACCESS READ AS #1
OPEN "SELFEXTR.EXE" FOR BINARY ACCESS WRITE AS #2
EinByte$=SPACE$(1)
DO UNTIL EOF(1)
GET #1,,EinByte$
PUT #2,,EinByte$
IF EOF(1) THEN EXIT DO
LOOP
CLOSE #1
Markierung$=chr$(60)+"BeginOfDataHere"+chr$(62) 'niemals als Volltext ausschreiben! :x
Dateiname$="blabla.bmp"
Laenge%=LEN(Dateiname$)
PUT #2,, Markierung$
PUT #2,, Laenge%
PUT #2,, Dateiname$
OPEN Dateiname$ FOR BINARY ACCESS READ AS #3
Dateilaenge& = LOF(3)
PUT #2,, Dateilaenge&
DO UNTIL EOF(3)
GET #3,,EinByte$
PUT #2,,EinByte$
IF EOF(3) THEN EXIT DO
LOOP
CLOSE #3
CLOSE #2
PRINT "Die Datei "+dateiname$+" wurde erfolgreich in ein selbstextrahierendes Archiv umgewandelt."
SLEEP: END |
Die Loader EXE muss sich dann selbst öffnen (=> eigenen Dateinamen herausfinden), nach der Datenmarkierung suchen und ab da in einer Schleife die Dateien extrahieren.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
Dominik
Anmeldungsdatum: 22.12.2004 Beiträge: 172
|
Verfasst am: 02.01.2006, 14:56 Titel: |
|
|
Vielen Dank!
Ich werde mir das in einer ruhigen Minute mal durch den Kopf gehen lassen. |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 02.01.2006, 20:06 Titel: |
|
|
Nachdem du von EXEs sprichst, kann man wohl von Windows ausgehen.
In dem Fall könntest du dich auch über die API AddRessource Informieren, die macht nämlich - gewissermaßen - das selbe.
Aber es ist wohl weniger kompliziert, die EXE 'manuell' umzuschreiben  _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|