Spustitelná komprese - Executable compression
![]() | tento článek potřebuje další citace pro ověření.Listopadu 2011) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Spustitelná komprese je jakýkoli prostředek komprese an spustitelný soubor a kombinace komprimovaných dat s dekompresním kódem do jednoho spustitelného souboru. Když je tento komprimovaný spustitelný soubor spuštěn, dekompresní kód znovu vytvoří původní kód z komprimovaného kódu před jeho provedením. Ve většině případů se to děje transparentně, takže komprimovaný spustitelný soubor lze použít přesně stejným způsobem jako originál. Spustitelné kompresory se často označují jako „runtime packery“, „softwarové balíky“, „softwarové chrániče“ (nebo dokonce „polymorfní baličky " a "popletl nástroje ").
Komprimovaný spustitelný soubor lze považovat za samorozbalovací archiv, kde je komprimovaný spustitelný soubor zabalen spolu s příslušným dekompresním kódem do spustitelného souboru. Některé komprimované spustitelné soubory lze dekomprimovat a rekonstruovat tak původní soubor programu, aniž by byly přímo provedeny. K tomu lze použít dva programy: CUP386 a UNP.
Většina komprimovaných spustitelných souborů dekomprimuje původní kód v paměti a většina vyžaduje ke spuštění o něco více paměti (protože je potřeba uložit dekompresní kód, komprimovaná data a dekomprimovaný kód). Některé komprimované spustitelné soubory navíc mají další požadavky, například ty, které před spuštěním zapisují dekomprimovaný spustitelný soubor do systému souborů.
Spustitelná komprese se neomezuje pouze na binární spustitelné soubory, ale lze ji použít i na skripty, například JavaScript. Protože většina skriptovacích jazyků je navržena pro práci lidsky čitelný kód, který má vysoký nadbytek, komprese může být velmi efektivní a stejně jednoduchá jako nahrazení dlouhých jmen používaných k identifikaci proměnné a funkce s kratšími verzemi a / nebo demontáží prázdné znaky.
Výhody a nevýhody
Software distributoři používají spustitelnou kompresi z různých důvodů, především ke snížení vedlejší sklad požadavky na jejich software; protože spustitelné kompresory jsou speciálně navrženy pro kompresi spustitelného kódu, často dosahují lepších výsledků kompresní poměr než standardní komprese dat zařízení jako gzip, zip nebo bzip2[Citace je zapotřebí ]. To umožňuje distributorům softwaru zůstat v rámci omezení jejich zvoleného distribučního média (např CD ROM, DVD-ROM nebo Disketa ), nebo ke zkrácení času a šířky pásma, které zákazníci požadují pro přístup k softwaru distribuovanému přes Internet.
K odradení se také často používá spustitelná komprese reverzní inženýrství nebo zamlžit obsah spustitelného souboru (například skrýt přítomnost souboru) malware z antivirové skenery ) proprietárními metodami komprese nebo přidanými šifrování. Spustitelnou kompresi lze použít k zabránění přímému demontáž, maska řetězcové literály a upravit podpisy. I když to nevylučuje šanci na reverzní inženýrství, může to tento proces stát nákladnějším.
Komprimovaný spustitelný soubor vyžaduje méně úložného prostoru v systému souborů, a tedy méně času na přenos dat ze systému souborů do paměti. Na druhou stranu to vyžaduje určitý čas na dekompresi dat před zahájením provádění. Rychlost různých paměťových médií však nedržela průměrné rychlosti procesoru, takže úložiště je velmi často překážkou. Komprimovaný spustitelný soubor se tedy načte na většině běžných systémů rychleji. Na moderních stolních počítačích je to zřídka patrné, pokud není spustitelný soubor neobvykle velký, takže rychlost načítání není primárním důvodem pro nebo proti komprimaci spustitelného souboru.
V operačních systémech, které čtou spustitelné obrázky na vyžádání z disku (viz virtuální paměť ), díky komprimovaným spustitelným souborům je tento proces méně efektivní. Dekompresorový pahýl přidělí blok paměti k uložení dekomprimovaných dat, která zůstanou přidělena, dokud zůstane spustitelný soubor načtený, ať už je používán nebo ne, a po celou dobu soutěží o paměťové prostředky s jinými aplikacemi. Pokud operační systém používá odkládací soubor, musí se do něj zapsat dekomprimovaná data, aby se uvolnila paměť, místo aby se jednoduše zahodily nepoužívané datové bloky a v případě potřeby se znovu načetly ze spustitelného obrazu. To obvykle není patrné, ale stává se problémem, pokud je spustitelný soubor načten více než jednou současně - operační systém nemůže znovu použít datové bloky, které již načetl, data musí být dekomprimována do nového paměťového bloku a bude pokud nejsou použity, vyměnit je samostatně. Další požadavky na úložiště a čas znamenají, že je třeba pečlivě zvážit, zda se mají komprimovat spustitelné soubory, které jsou obvykle spuštěny více než jednou najednou.
Další nevýhodou je, že některé nástroje již nemohou identifikovat běhová knihovna závislosti, jako jediný staticky propojeno je vidět útržek extraktoru.
Také některé starší antivirové skenery jednoduše nahlásit všechny komprimované spustitelné soubory jako viry protože dekompresorové pahýly sdílejí některé charakteristiky s těmi. Většina moderních antivirových skenerů může rozbalit několik různých vrstev spustitelných komprimací, aby zkontrolovala skutečný spustitelný soubor uvnitř, ale některé populární antivirové a antimalwarové skenery měly problémy s falešně pozitivními poplachy na komprimovaných spustitelných souborech. Ve snaze vyřešit problém malware zmaten pomocí runtime packery the IEEE Skupina zabezpečení průmyslového připojení zavedl a software taggant Systém.
Spustitelná komprese bývala populárnější, když byly počítače omezeny na úložnou kapacitu diskety, což byla jak pomalá, tak nízkokapacitní média a malá pevné disky; umožnilo počítači uložit více softwaru na stejné místo bez obtíží s ručním vybalením archivního souboru pokaždé, když uživatel chtěl software použít. Spustitelná komprese se však stala méně populární kvůli zvýšené úložné kapacitě počítačů. Má své použití v demoscene kde dema musí zůstat v a omezení velikosti jako 64 kilobajtů přihlásit se do některých soutěží. Pouze velmi propracované kompresní formáty, které zvyšují čas načítání, udržují spustitelný soubor dostatečně malý na to, aby se mohl zúčastnit těchto soutěží.
Seznam spustitelných balíčků
Spustitelný CP / M a MSX-DOS
Známé spustitelné kompresory pro CP / M / MSX-DOS Soubory .COM:
- PMexe (od roku 1990, autor Yoshihiko Mino, PMARC.COM + PMEXE.CPM)[1]
Spustitelný systém DOS
Známé spustitelné kompresory pro DOS spustitelné soubory (.COM nebo .EXE ):
- Realia Spacemaker (od roku 1982, autor: Robert B. K. Dewar, SM.COM, podpis „MEMORY $“)[2][3][4][5][6][7][8][9]
- Microsoft EXEPACK (od roku 1985, autor: Reuben Borman, EXEPACK.EXE, LINK.EXE / E [XEPACK], podpis „RB“)[9][5][4][10]
- LZEXE (od roku 1989, autor: Fabrice Bellard, LZEXE.EXE)[11][12]
- PKWare PKLite (od roku 1990, autor: Phil Katz, PKLITE.EXE)[12][13]
- DIETA (od roku 1991, autor: Teddy Matsumoto, DIET.EXE)[12]
- TINYPROG (TINYPROG.EXE)
- RJS Software RJCRUSH (od roku 1994, autor Roland Skinner, RJCRUSH.EXE)
- XPA (od roku 1995, autor JauMing Tseng, XPA.EXE)
- Ibsen Software aPACK (od roku 1997, autor Jørgen Ibsen, APACK.EXE)
- UPX (od roku 1998, autor: Markus F. X. J. Oberhumer a László Molnár)
- 32LiTE (od roku 1998, autor Oleg Prokhorov, 32LITE.EXE)
- Znalostní dynamika LZW kompresor[14]
- WWpack (napsali Piotr Warezak a Rafal Wierzbicki, WWPACK.EXE)
- 624 (pouze pro soubory .COM menší než 25 KB, používá LZW )
- AINEXE
- AvPack
- ComPAck
- HASP Envelope
- LGLZ
- PMWLITE
- ProPack
- UCEXE
- WDOSX
- XE
- XPack
Spustitelný OS / 2
Známé spustitelné kompresory pod OS / 2:
- NeLite
- LxLite
Nový spustitelný soubor
Známé spustitelné kompresory pro Nové spustitelné soubory:
- PackWin
- PKWare PKLite (od verze 2.01)
- WinLite
Přenosný spustitelný soubor
Známé spustitelné kompresory pro Přenosné spustitelné soubory:
Poznámka: Klienti v purpurové barvě již nejsou ve vývoji.
název | Nejnovější stabilní | Softwarová licence | x86-64 Podpěra, podpora |
---|---|---|---|
32Lite | |||
Alienyze | 1.4 (17. srpna 2020 | )Proprietární | Ne |
ANDpakk2 | |||
Pásovec | 9,62 (7. června 2013 | )Proprietární | Ano |
ASPack | 2,40 (7. prosince 2018 | )Proprietární | Ano |
ASPR (ASProtect) | 2,78 (7. prosince 2018 | )Proprietární | Ano |
BeRoEXEPacker | |||
BIN-krypter | |||
PackedApp Packer | 3,3 (26. července 2015 | )Proprietární | Ano |
CExe | 1,0b (20. července 2001 | )GPL | Ne |
Crinkler | 2.2 (15. června 2019 | )Freeware | Ano |
dotBundle | 1.3 (4. dubna 2013[15] | )Proprietární | Ano |
Enigma Protector | 6,60 (21. srpna 2019[16] | )Proprietární | Ano |
Enigma Virtual Box | 9,40 (10. října 2019[16] | )Proprietární | Ano |
exe32pack | |||
Balíček EXE | 3.11 (7. ledna 2011[17] | )Proprietární | ? |
EXECryptor | |||
Stealth EXE | 4,14 (29. června 2011[17] | )Proprietární | ? |
eXPressor | 1.8.0.1 (14. ledna 2010 | )Proprietární | ? |
FSG | 2.0 (24. května 2004[18] | )Freeware | Ne |
kkrunchy src | 0.23a4 (neznámé) | Veřejná doména | Ne |
PELICHÁNÍ | 1.1 (Neznámý) | Freeware | Ne |
MPRESS | 2,19 (2. ledna 2012 | )Freeware | Ano |
MuCruncher | |||
NeoLite | |||
.netshrink | 2.7 (2. července 2016[19] | )Proprietární | Ano |
NsPack | |||
Obsidium | 1.6 (11. dubna 2017[20] | )Proprietární | Ano |
PECompact | |||
PELock | 2,06 (15. srpna 2016[21] | )Proprietární | Ne |
PEPack | |||
PESpin | 1,33 (3. května 2011 | )Freeware | Ano |
Drobná | 2.4 (22. září 2016 | )Freeware | Ne |
PKLite32 | |||
RLPack Basic | 1,21 (31. října 2008 | )GPL | Ne |
32. Shrinker | |||
Smart Packer Pro X | 2.0.0.1 (3. června 2019 | )Proprietární | Ano |
Themida / WinLicense | 3.0 (24. října 2019 | )Proprietární | Ano |
Upack | |||
UPX | 3,96 (23. ledna 2020 | )GPL | experimentální |
VMProtect | 3,4 (3. srpna 2019 | )Proprietární | Ano |
WWPack32 | |||
XComp / XPack | 0,98 (18. února 2007 | )Freeware | Ne |
Yoda's Crypte | |||
YZPack |
Soubory ELF
Známé spustitelné kompresory pro ELF soubory:
- gzexe (používá a shell skript útržek a gzip, funguje na většině unixových systémů)
- HASP Envelope
- UPX
- 624 (pro Linux / 386)[22]
Soubory sestavení CLI
Známé spustitelné kompresory pro Sestava CLI soubory:
- .NETZ
- NsPack
- Mpress
- HASP Envelope
- .netshrink
- dotBundle
- Exepack.NET
- DotProtect:[23] Komerční chránič / balič pro .net a mono. Nabízí on-line ověřování a „šifrování podle průmyslového standardu“.
Soubory aplikace Mac OS Classic
Známé spustitelné kompresory pro Mac OS Classic soubory aplikace:
- VISE aplikace[24]
- StuffIt InstallerMaker
Soubory Mach-O (Apple Mac OS X)
Známé spustitelné kompresory pro Mach-O Soubory (Apple Mac OS X):
- HASP Envelope
- UPX
- VMProtect
Commodore 64 a VIC 20
Známé spustitelné kompresory pro spustitelné soubory v systému Windows Commodore 64 a VIC 20:
Commodore Amiga
Známé spustitelné kompresory pro spustitelné soubory v systému Windows Commodore Amiga série:
Jáva
Známé spustitelné kompresory pro Jáva:
SKLENICE soubory:
- HASP Envelope
- pack200
- ProGuard
VÁLKA soubory:
- HASP Envelope
JavaScriptové skripty
Lze použít dva typy komprese JavaScript skripty:
- Snižte redundanci ve skriptu (odstraněním komentářů, mezer a zkrácením názvů proměnných a funkcí). To nemění chování skriptu.
- Zkomprimujte původní skript a vytvořte nový skript, který obsahuje dekompresní kód a komprimovaná data. To je podobné binární spustitelné kompresi.
Samokompresorové kompresory
Tyto komprimují původní skript a vygenerují nový skript, který má dekompresor a komprimovaná data.
- JsSfx
- Zabalit
Kompresory snižující nadbytečnost
Ty odstraní prázdné místo, odstraní komentáře a zkrátí názvy proměnných a funkcí, ale nezmění chování skriptu.
- Balírna
- YUI kompresor
- Smršťovací
- JSMin
Viz také
Reference
- ^ Gielen, Pierre; Taylor, Johnathan (1997) [1993]. Logan, Wolverine (ed.). "Nápověda k PMarc". Archivováno od originálu na 2019-04-22. Citováno 2019-02-22.
[…] PMEXE.CPM […] je modul […] v kombinaci s PMARC […] sloužící k vytváření spustitelných komprimovaných souborů COM (stejně jako LZEXE nebo PKLITE […] typ: PMARC
.COM = PMEXE2.CPM [možnosti] Název archivu musí být .COM […] ne. PMA. Výstupní soubor bude mít příponu .CPM. Je to MSX-DOS Soubor COM […] přejmenujte soubor […] a spusťte jej […] - ^ „Expertní zpráva Roberta B. K. Dewara v reakci na zprávu Kennetha D. Crewse“. Cambridge University Press et al v. Patton et al, Filing 124, Supplemental Initial Disclosures od Cambridge University Press, Oxford University Press, Inc., Sage Publications, Inc. - Cambridge University Press, Oxfort University Press, Inc. a Sage Publications, Inc. v. Mark P. Becker, prezident Gruzínské státní univerzity a kol., Civilní žaloba č. 1: 08-CV-1425-ODE (Soudní dokument). Okresní soud Spojených států pro severní obvod Gruzie, divize Atlanta. str. 18. Výstava A. Archivováno od původního dne 2018-05-01. Citováno 2019-04-23.
[…] SPACEMAKER a TERMULATOR, komoditní software pro IBM PC (PC DOS nástroj pro kompresi souborů a VT-100 emulátor), uváděný na trh společností Realia, Inc. R.B.K. Dewar (1982-1983), 8088 montážního jazyka, 8 000 řádků […]
- ^ Realia, Inc. (leden 1983). „Pokud používáte DOS, potřebujete tento program“. PC Magazine (reklama). Ziff-Davis Publishing. 2 (9): 417. Archivováno od originálu na 2019-04-22. Citováno 2019-04-22.
- ^ A b Dewar, Robert Berriedale Keith (1984-03-13). „DOS 3.1 ASMB (Another Silly Microsoft Bug)“. [email protected]. Archivováno od původního dne 2018-05-01. Citováno 2019-04-23.
[…] Možnost / E linkeru by měla vygenerovat soubor EXE, který je logicky ekvivalentní nekomprimovanému souboru EXE. Aktuální verze […] má za následek, že AX byla podražena. AX při vstupu do souboru EXE má určitý význam (označuje platnost jednotky pro parametry), proto by měla být předána nekomprimovanému obrazu. Vzhledem k tomuto velmi zjevnému porušení pravidel rozhraní mohou existovat i další, neobtěžoval jsem se dále zkoumat […] Napsal jsem program Realia SpaceMaker, který dělá podobné věci jako možnost EXEPACK (ale netřeba říkat ano nemít tento konkrétní […]
- ^ A b Paul, Matthias R. (10. 10. 2002) [2000]. „Problémy související s masm .com (PSP)“. Diskusní skupina: alt.lang.asm. Archivováno z původního dne 2017-09-03. Citováno 2017-09-03.}
- ^ Nečasek, Michal (30.04.2018). „Realia SpaceMaker“. Muzeum OS / 2. Archivováno od originálu na 2019-01-27. Citováno 2019-02-22.
- ^ Parsons, Jeff (01.01.2019). „Aktualizace nástrojů Early Norton Utilities“. PCjs. Archivováno od původního dne 2019-01-29. Citováno 2019-02-22.
- ^ Nečasek, Michal (01.01.2019). „Ano, Norton to udělal“. Muzeum OS / 2. Archivováno od originálu na 2019-04-22. Citováno 2019-04-22.
- ^ A b Nečasek, Michal (23.03.2018). „EXEPACK a brána A20“. Muzeum OS / 2. Archivováno od originálu dne 2018-11-13. Citováno 2019-04-20.
- ^ Miles, Ya'akov; Nather, Ed (17.05.1986) [05.02.1986, 09.02.1986]. „Možnost Microsoft LINK bez dokladů: / E“. Seznam adresářů INFO-IBMPC. Archivováno od původního dne 2018-05-01. Citováno 2019-04-26.
[Miles:] Existuje nezdokumentovaný […] přepínač Microsoft LINK.EXE […], což způsobí automatické zhutnění během vazby. Tento proces eliminuje úložiště pro neinicializovaná pole ze souboru .EXE vytvořeného linkerem […] Chcete-li použít tuto funkci, zadejte do příkazového řádku možnost / E […] [Místo:] Ve verzích MS Link tato možnost neexistuje 3.00 a 3.01 [Miles:] Porovnáním velikostí (zabalených) souborů generovaných z LINK ver 3.02 a možnosti / E s velikostí souboru .EXE ručně zabaleného pomocí […] EXEPACK jsem dospěl k závěru, že Možnost LINK ver 3.02 / E generuje PŘESNĚ stejnou velikost souboru jako ruční spuštění EXEPACK na běžný výstup souboru .EXE LINK […]
- ^ Bellard, Fabrice (2003-02-09). "Domovská stránka LZEXE". bellard.org. Archivováno z původního dne 2019-03-24. Citováno 2019-03-18.
- ^ A b C Salomon, David (2000) [1998]. "Kapitola 3.22: Kompresory EXE". Komprese dat: Kompletní reference (2. vyd.). Springer-Verlag. str. 212. doi:10.1007/978-3-642-86092-8. ISBN 978-3-540-78086-1. S2CID 35889155. Citováno 2019-04-26.
- ^ Paul, Matthias R. (04.04.2002). „Re: [fd-dev] OZNAM: CuteMouse 2.0 alfa 1“. freedos-dev. Archivováno od původního dne 2020-02-21. Citováno 2020-02-21.
[…]> Nikdo balírny nesmí zabalit komba jako .SYS + .COM nebo .SYS + .EXE. […] Existují pakery pro .COM nebo .EXE a další pro .SYS, ale ani já jsem neviděl packer, který podporuje oba v jednom. […] Možnost kombinovat program / TSR a ovladač zařízení v souborech .EXE […] a programu / TSR.COM a ovladači zařízení do programu .COM […] Do souboru by také mohlo být možné přidat další vlastní stub poté, co již byl komprimován […] všechny komprimované DR-DOS ovladače zařízení používají podobnou techniku, aby umožnily normálnímu dekompresoru PKLITE .COM pracovat se soubory .SYS (PKLITE zatím podporuje podobnou funkci pro samotné soubory .SYS). […]
(Pozn. PKLITE 1.50 (1995) a vyšší získal schopnost komprimovat ovladače zařízení, ale nekombinoval ovladače COM + SYS.) - ^ https://code.google.com/archive/p/mz-explode/
- ^ „Archivovaná kopie“. Archivovány od originál dne 21. 8. 2013. Citováno 2013-05-06.CS1 maint: archivovaná kopie jako titul (odkaz)
- ^ A b http://www.enigmaprotector.com/en/downloads/changelog.html
- ^ A b http://webtoolmaster.com/news.xml
- ^ https://web.archive.org/web/20040525022811/http://www.xtreeme.prv.pl/
- ^ https://www.pelock.com/products/netshrink/download
- ^ https://www.obsidium.de/show/download
- ^ https://www.pelock.com/products/pelock/download
- ^ http://sed.free.fr/624/
- ^ DotProtect http://site.yvansoftware.be/dotpacker1_0 Archivováno 22. ledna 2011 v Wayback Machine
- ^ Kiene, Steve; Mark, Dave (1999). „Chat se Stevem Kieneem“. MacTech. Sv. 15 č. 4. Citováno 2017-12-10.
- ^ https://web.archive.org/web/20140730211711/http://www.cs.tut.fi/~albert/Dev/pucrunch/
- ^ web.comhem.se/~u13114991/exo/
- ^ https://csdb.dk/release/?id=33093
- ^ A b C http://www.amiga-stuff.com/crunchers-download.html
- ^ https://github.com/askeksa/Shrinkler
- ^ http://www.pouet.net/prod.php?which=54840