Znači, da li postoji kakav primjer (po mogućnosti BCB IDE) kojim je moguće kreirati self-extracting exe. On bi nakon extractiranja trebao pokrenuti prethodno definirani izvršni program koji se nalazio u njemu.
Kreiranje self-extracting EXE
Zaključano
Zakačeno
Mogao bi recimo da koristiš zlib i da napraviš neku šemu, recimo:
1. Extractor
2. Header
3. Content
(1+2+3 = Self-extracting exe)
Dakle, neophodne fajlove spakuješ, definišeš neki header (neke neophodne informacije) i zajedno i "Header" i "Content" appenduješ extractoru i to je to.
Ne znam da li si mislio na tako nešto recimo...
1. Extractor
2. Header
3. Content
(1+2+3 = Self-extracting exe)
Dakle, neophodne fajlove spakuješ, definišeš neki header (neke neophodne informacije) i zajedno i "Header" i "Content" appenduješ extractoru i to je to.
Ne znam da li si mislio na tako nešto recimo...
Evo kako sam ja, kad sam bio mali, to uradio u VB6, ali logika je bitna:
Znači, imaš jedan EXE i u njemu se nalazi ovakav kôd. Taj EXE se zove Stub ili Extractor, kako ga je Goran nazvao. Ovaj EXE je veličine 82945 bajta. Ja sam sakriveni EXE samo zalijepio za taj Stub EXE. Stoga, otvoriš taj svoj EXE (kompletni, koji sadrži u sebi i stub i exe koji hoćeš extraktovati), pozicioniraš se na lokaciju gdje počinje novi exe i to samo snimiš u novu datoteku, u mom slučaju to je Test.exe. Na kraju samo pokreneš taj novi EXE.
Code:
Open App.Path & "\" & App.EXEName & ".exe" For Binary As 1
Open "Test.exe" For Binary As 2
Dim DataArray(FileLen(App.Path & "\" & App.EXEName & ".exe") - 82945)
Seek #1, 82945
Get #1, , DataArray()
Put #2, , DataArray()
Close #1
Close #2
Open App.Path & "\" & App.EXEName & ".exe" For Binary As 1
Open "Test.exe" For Binary As 2
Dim DataArray(FileLen(App.Path & "\" & App.EXEName & ".exe") - 82945)
Seek #1, 82945
Get #1, , DataArray()
Put #2, , DataArray()
Close #1
Close #2
Znači, imaš jedan EXE i u njemu se nalazi ovakav kôd. Taj EXE se zove Stub ili Extractor, kako ga je Goran nazvao. Ovaj EXE je veličine 82945 bajta. Ja sam sakriveni EXE samo zalijepio za taj Stub EXE. Stoga, otvoriš taj svoj EXE (kompletni, koji sadrži u sebi i stub i exe koji hoćeš extraktovati), pozicioniraš se na lokaciju gdje počinje novi exe i to samo snimiš u novu datoteku, u mom slučaju to je Test.exe. Na kraju samo pokreneš taj novi EXE.
Potpis
Zar ne bi trebalo dodavanje novog exe-a već postojećem uzrokovati grešku tipa "file is corrupted" ili sl.? Isto vrijedi i za dodavanje dokumenata exe-u?
Koliko shvatam, tebi treba UPX.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Citat:
itf: Zar ne bi trebalo dodavanje novog exe-a već postojećem uzrokovati grešku tipa "file is corrupted" ili sl.? Isto vrijedi i za dodavanje dokumenata exe-u?
Neće se EXE korumpirati jer sve njegove sekcije ostaju netaknute...
UPX je kompresor. Radi na sličan način ali sa stanovišta programa, ti nemaš nikakve kontrole nad unpackovanjem...
Potpis
Mozda nesto ovako:
http://www.ziptv.com/
Ili vredi pogledati source kod 7-zip arhivera koji takodje ima sfx
http://www.7-zip.org/
http://www.ziptv.com/
Ili vredi pogledati source kod 7-zip arhivera koji takodje ima sfx
http://www.7-zip.org/
Potpis
Tko leti vrijedi
Mislim da sam tek sada razumeo šta postavljač teme hoće.
Dakle, treba da napravi jedan exe fajl, koji predstavlja self extract arhivu, koji kada se pokrene raspakuje se i pokrene neki program (npr. koji je raspakovao).
Pa, to se može rešiti NSIS-om (Nullsoft Scriptable Install System). Možeš napisati skriptu koja radi baš to.
Sa druge strane, pomenuti UPX služi za smanjivanje veličine exe fajla - sam se raspakuje i zvrši, korisnik ima utisak da je to običan nekomprimovan exe. To je sasvim druga stvar.
Dakle, treba da napravi jedan exe fajl, koji predstavlja self extract arhivu, koji kada se pokrene raspakuje se i pokrene neki program (npr. koji je raspakovao).
Pa, to se može rešiti NSIS-om (Nullsoft Scriptable Install System). Možeš napisati skriptu koja radi baš to.
Sa druge strane, pomenuti UPX služi za smanjivanje veličine exe fajla - sam se raspakuje i zvrši, korisnik ima utisak da je to običan nekomprimovan exe. To je sasvim druga stvar.
Potpis
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.