Suoritettava pakkaus - Executable compression

Suoritettavan puristus on mikä tahansa keino puristamalla suoritettavan tiedoston ja yhdistämällä pakatun datan kanssa purkaminen koodi yhdeksi suoritettavan. Kun tämä pakattu suoritustiedosto suoritetaan, purkukoodi luo uudelleen alkuperäisen koodin pakatusta koodista ennen sen suorittamista. Useimmissa tapauksissa tämä tapahtuu läpinäkyvästi, joten pakattua suoritettavaa tiedostoa voidaan käyttää täsmälleen samalla tavalla kuin alkuperäistä. Suoritettavia kompressoreita kutsutaan usein "ajonaikaisiksi pakkaajiksi", "ohjelmistopakkaajiksi", "ohjelmistosuojaimiksi" (tai jopa " polymorfisiksi pakkaajiksi " ja " hämmentäviksi työkaluiksi ").

Pakattua suoritettavaa tiedostoa voidaan pitää itsepurkautuvana arkistona , jossa pakattu suoritustiedosto on pakattu suoritettavan tiedoston pakkauskoodin mukana. Jotkin pakatut suoritettavat tiedostot voidaan purkaa alkuperäisen ohjelmatiedoston rekonstruoimiseksi ilman suorittamista. Kaksi ohjelmaa, joita voidaan käyttää tähän, ovat CUP386 ja UNP.

Useimmat pakatut suoritettavat tiedostot purkavat alkuperäisen koodin muistista ja useimmat vaativat hieman enemmän muistia toimiakseen (koska niiden on tallennettava purkukoodi, pakatut tiedot ja purettu koodi). Lisäksi joillakin pakatuilla suoritettavilla tiedostoilla on lisävaatimuksia, kuten ne, jotka kirjoittavat puretun suoritustiedoston tiedostojärjestelmään ennen sen suorittamista.

Suoritettava pakkaus ei rajoitu binaarisiin suoritettaviin tiedostoihin, vaan sitä voidaan soveltaa myös skripteihin, kuten JavaScript . Koska useimmat skriptikielet on suunniteltu toimimaan ihmisen luettavan koodin kanssa , jolla on suuri redundanssi , pakkaaminen voi olla erittäin tehokasta ja yhtä yksinkertaista kuin korvata muuttujien ja toimintojen tunnistamiseen käytetyt pitkät nimet lyhyemmillä versioilla ja/tai poistaa välilyönti .

Hyödyt ja haitat

Ohjelmistojen jakelijat käyttävät suoritettavaa pakkausmateriaalia useista syistä, pääasiassa ohjelmistojensa toissijaisen tallennustilan vähentämiseksi . koska suoritettavat kompressorit on suunniteltu erityisesti pakattavan suoritettavan koodin pakkaamiseen, ne saavuttavat usein paremman pakkaussuhteen kuin tavalliset tietojen pakkauslaitteet , kuten gzip , zip tai bzip2 . Tämän ansiosta ohjelmistojen jakelijat voivat pysyä valitsemiensa jakelutietovälineiden (kuten CD-ROM- , DVD-ROM- tai levykkeen ) rajoissa tai vähentää aikaa ja kaistanleveyttä, joita asiakkaat tarvitsevat Internetin kautta jaettujen ohjelmistojen käyttämiseen .

Suoritettavan puristuksen käytetään usein myös estää reverse engineering tai hämärtää sisällön suoritettavan (esimerkiksi piilottaa läsnäolo haittaohjelmia päässä antivirus skannereita ) omistajakohtaiset menetelmiä puristus ja / tai lisätä salauksen . Suoritettavaa kompressointia voidaan käyttää estämään suora purkaminen , peittämään merkkijono -literaaleja ja muokkaamaan allekirjoituksia. Vaikka tämä ei poista mahdollisuutta käänteiseen suunnitteluun, se voi tehdä prosessista kalliimpaa.

Pakattu suoritettava tiedosto vaatii vähemmän tallennustilaa tiedostojärjestelmässä, joten vähemmän aikaa tietojen siirtämiseen tiedostojärjestelmästä muistiin. Toisaalta tietojen purkaminen kestää jonkin aikaa ennen suorituksen aloittamista. Eri tallennusvälineiden nopeus ei kuitenkaan ole pysynyt keskimääräisten prosessorin nopeuksien mukana, joten tallennus on usein pullonkaula. Näin pakattu suoritustiedosto latautuu nopeammin useimmissa järjestelmissä. Nykyaikaisissa pöytätietokoneissa tämä on harvoin havaittavissa, ellei suoritettava tiedosto ole epätavallisen suuri, joten latausnopeus ei ole ensisijainen syy suoritettavan tiedoston pakkaamiseen tai sitä vastaan.

Käyttöjärjestelmissä, jotka lukevat suoritettavia kuvia pyynnöstä levyltä (katso virtuaalimuisti ), pakatut suoritettavat tiedostot vähentävät tätä prosessia. Dekompressorityyppi varaa muistilohkon pakkaamattomien tietojen säilyttämiseksi, ja se pysyy varattuina niin kauan kuin suoritettava tiedosto on ladattu riippumatta siitä, käytetäänkö sitä vai ei, ja kilpailee muistivarannoista muiden sovellusten kanssa koko ajan. Jos käyttöjärjestelmä käyttää swap -tiedostoa, puretut tiedot on kirjoitettava siihen muistin vapauttamiseksi sen sijaan, että yksinkertaisesti hylättäisiin käyttämättömät datalohkot ja ladataan ne tarvittaessa uudelleen suoritettavasta kuvasta. Tämä ei yleensä ole havaittavissa, mutta siitä tulee ongelma, kun suoritettava tiedosto ladataan useammin kuin kerran samanaikaisesti - käyttöjärjestelmä ei voi käyttää uudelleen jo ladattuja datalohkoja, tiedot on purettava uuteen muistilohkoon ja vaihdettava itsenäisesti, jos sitä ei käytetä. Muiden tallennustila- ja aikavaatimusten vuoksi on punnittava huolellisesti, pakataanko suoritettavat tiedostot, joita tyypillisesti ajetaan useammin kuin kerran samanaikaisesti.

Toinen haittapuoli on se, että jotkut apuohjelmat eivät voi enää tunnistaa ajonaikaisia ​​kirjastoriippuvuuksia , koska vain staattisesti linkitetty poistoputki on näkyvissä.

Lisäksi jotkut vanhemmat virustentorjuntaohjelmat yksinkertaisesti ilmoittavat kaikki pakatut suoritettavat tiedostot viruksiksi, koska pakkauksen purkajilla on joitain ominaisuuksia niiden kanssa. Useimmat nykyaikaiset virustentorjuntaohjelmat voivat purkaa useita erilaisia ​​suoritettavia pakkauskerroksia todellisen suoritettavan sisällön tarkistamiseksi, mutta joillakin suosituilla virustentorjunta- ja haittaohjelmatorjuntaohjelmilla on ollut ongelmia pakattujen suoritettavien tiedostojen väärien positiivisten hälytysten kanssa. Yrittäessään ratkaista haittaohjelmien sotkettu avulla ajonaikaisia IEEE Industry Yhteydet Security Group on ottanut käyttöön ohjelmiston merkkiainetta järjestelmää.

Suoritettava pakkaus oli suositumpaa, kun tietokoneet rajoittuivat levykkeiden , jotka olivat sekä hitaita että pienikapasiteettisia tietovälineitä, ja pienien kiintolevyjen tallennuskapasiteettiin ; se salli tietokoneen tallentaa enemmän ohjelmistoja samaan tilaan ilman haittaa siitä, että arkistotiedosto olisi purettava manuaalisesti aina, kun käyttäjä halusi käyttää ohjelmistoa. Suoritettava pakkaus on kuitenkin tullut vähemmän suosituksi tietokoneiden lisääntyneen tallennuskapasiteetin vuoksi. Sitä käytetään demoscene -tilassa, jossa demojen on pysyttävä kooltaan 64 kilotavun rajoissa päästäkseen joihinkin kilpailuihin. Vain erittäin kehittyneet pakkausmuodot, jotka lisäävät latausaikaa, pitävät suoritettavan tiedoston riittävän pienenä osallistuakseen näihin kilpailuihin.

Luettelo suoritettavista pakkauksista

CP/M ja MSX-DOS suoritettava

Tunnetut suoritettavat kompressorit CP / M / MSX-DOS .COM-tiedostoille :

  • PMexe (vuodesta 1990, kirjoittanut Yoshihiko Mino, PMARC.COM+PMEXE.CPM)

Suoritettava DOS

Tunnetut suoritettavat kompressorit DOS -suoritettaville tiedostoille ( .COM tai .EXE ):

  • Realia Spacemaker (vuodesta 1982, kirjoittanut Robert BK Dewar , SM.COM, allekirjoitus "MEMORY $")
  • Microsoft EXEPACK (vuodesta 1985, kirjoittanut Reuben Borman , EXEPACK.EXE, LINK.EXE /E [XEPACK], allekirjoitus "RB")
  • LZEXE (vuodesta 1989, kirjoittanut Fabrice Bellard, LZEXE.EXE)
  • PKWare PKLite (vuodesta 1990, kirjoittanut Phil Katz , PKLITE.EXE)
  • DIET (vuodesta 1991, kirjoittanut Teddy Matsumoto , DIET.EXE)
  • TINYPROG (TINYPROG.EXE)
  • RJS Software RJCRUSH (vuodesta 1994, kirjoittanut Roland Skinner, RJCRUSH.EXE)
  • XPA (vuodesta 1995, kirjoittanut JauMing Tseng, XPA.EXE)
  • Ibsen Software aPACK (vuodesta 1997, kirjoittanut Jørgen Ibsen, APACK.EXE)
  • UPX (vuodesta 1998, kirjoittanut Markus FXJ Oberhumer ja László Molnár)
  • 32LiTE (vuodesta 1998, kirjoittanut Oleg Prokhorov, 32LITE.EXE)
  • Knowledge Dynamics LZW -kompressori
  • WWpack (kirjoittanut Piotr Warezak ja Rafal Wierzbicki, WWPACK.EXE)
  • 624 (vain alle 25 kt: n .COM -tiedostoille, käyttää LZW: tä )
  • AINEXE
  • AvPack
  • ComPAck
  • HASP -kirjekuori
  • LGLZ
  • PMWLITE
  • ProPack
  • UCEXE
  • WDOSX
  • XE
  • XPack

Suoritettava OS/2

Tunnetut suoritettavat kompressorit OS/2 : ssa:

  • NeLite
  • LxLite

Uusi suoritettava

Tunnetut suoritettavat kompressorit uusille suoritettaville tiedostoille :

  • PackWin
  • PKWare PKLite (versiosta 2.01)
  • WinLite

Kannettava suoritettava

Tunnetut suoritettavat kompressorit kannettaville suoritettaville tiedostoille :

Huomautus: Violetit asiakkaat eivät ole enää kehitteillä.

Nimi Viimeisin vakaa Ohjelmistolisenssi x86-64- tuki
32Lite
Alienyze 1.4 (17. elokuuta 2020 )  ( 2020-08-17 ) Oma Ei
ANDpakk2
Armadillo 9.62 (7. kesäkuuta 2013 )  ( 2013-06-07 ) Oma Joo
ASPack 2.40 (7. joulukuuta 2018 )  ( 2018-12-07 ) Oma Joo
ASPR (ASProtect) 2.78 (7. joulukuuta 2018 )  ( 2018-12-07 ) Oma Joo
BeRoEXEPacker
BIN-salaaja
BoxedApp -pakkaaja 3.3 (26. heinäkuuta 2015 )  ( 26.07.2015 ) Oma Joo
CExe 1.0b (20. heinäkuuta 2001 )  ( 2001-07-20 ) GPL Ei
Crinkler 2.2 (15. kesäkuuta 2019 )  ( 2019-06-15 ) Freeware Joo
dotBundle 1.3 (4. huhtikuuta 2013 )  ( 2013-04-04 ) Oma Joo
Enigma Protector 6.60 (21. elokuuta 2019 )  ( 2019-08-21 ) Oma Joo
Enigma Virtual Box 9.40 (10. lokakuuta 2019 )  ( 2019-10-10 ) Oma Joo
exe32pakkaus
EXE -paketti 3.11 (7. tammikuuta 2011 )  ( 2011-01-07 ) Oma ?
EXECryptor
EXE Stealth 4.14 (29. kesäkuuta 2011 )  ( 29.6.2011 ) Oma ?
eXPressor 1.8.0.1 (14. tammikuuta 2010 )  ( 14.1.2010 ) Oma ?
FSG 2.0 (24. toukokuuta 2004 )  ( 2004-05-24 ) Freeware Ei
kkrunchy src 0.23a4 (Tuntematon) Julkinen verkkotunnus Ei
MEW 1.1 (Tuntematon) Freeware Ei
MPRESS 2.19 (2. tammikuuta 2012 )  ( 2012-01-02 ) Freeware Joo
MuCruncher
NeoLite
.kutistua 2.7 (2. heinäkuuta 2016 )  ( 2.7.2016 ) Oma Joo
NsPack
Obsidium 1.6 (11. huhtikuuta 2017 )  ( 2017-04-11 ) Oma Joo
PECompact
PELock 2.06 (15. elokuuta 2016 )  ( 15.8.2016 ) Oma Ei
PEPack
PESpin 1.33 (3. toukokuuta 2011 )  ( 2011-05-03 ) Freeware Joo
Siro 2.4 (22. syyskuuta 2016 )  ( 22.9.2016 ) Freeware Ei
PKLite32
RLPack Basic 1.21 (31. lokakuuta 2008 )  ( 2008-10-31 ) GPL Ei
Kutistin32
Smart Packer Pro X 2.0.0.1 (3. kesäkuuta 2019 )  ( 2019-06-03 ) Oma Joo
Themida/WinLicense 3.0 (24. lokakuuta 2019 )  ( 2019-10-24 ) Oma Joo
Pakkaa
UPX 3.96 (23. tammikuuta 2020 )  ( 2020-01-23 ) GPL kokeellinen
VMProtect 3.4 (3. elokuuta 2019 )  ( 2019-08-03 ) Oma Joo
WWPack32
XComp/XPack 0,98 (18. helmikuuta 2007 )  ( 2007-02-18 ) Freeware Ei
Yodan Crypte
YZPack

ELF -tiedostot

Tunnetut suoritettavat kompressorit ELF -tiedostoille:

CLI -kokoonpanotiedostot

Tunnetut suoritettavat kompressorit CLI -kokoonpanotiedostoille :

  • .NETZ
  • NsPack
  • Mpress
  • HASP -kirjekuori
  • .kutistua
  • dotBundle
  • Exepack.NET
  • DotProtect: Kaupallinen suoja/pakkaus .net ja mono. Sisältää online-tarkistukset ja "alan standardin salauksen".

Mac OS Classic -sovellustiedostot

Tunnetut suoritettavat kompressorit Mac OS Classic -sovellustiedostoille:

  • Sovellus VISE
  • StuffIt InstallerMaker

Mach-O (Apple Mac OS X) -tiedostot

Tunnetut suoritettavat kompressorit Mach-O (Apple Mac OS X) -tiedostoille:

  • HASP -kirjekuori
  • UPX
  • VMProtect

Commodore 64 ja VIC 20

Tunnetut suoritettavat kompressorit Commodore 64: n ja VIC 20 : n suoritettaville tiedostoille :

  • PuCrunch
  • Exomizer
  • TavuBoozer

Kommodori Amiga

Tunnetut suoritettavat kompressorit Commodore Amiga -sarjan suoritettaville tiedostoille :

  • powerpacker
  • Titanics cruncher
  • imploder
  • TNM cruncher
  • Kutistin
  • PackFire

Java

Tunnetut suoritettavat Java -kompressorit :

JAR -tiedostot:

WAR -tiedostot:

  • HASP -kirjekuori

JavaScript -komentosarjat

JavaScript -skripteihin voidaan soveltaa kahdenlaisia ​​pakkauksia :

  • Vähennä komentosarjan redundanssia (poistamalla kommentit, välilyönti ja lyhentämällä muuttujien ja toimintojen nimiä). Tämä ei muuta käsikirjoituksen käyttäytymistä.
  • Pakkaa alkuperäinen komentosarja ja luo uusi komentosarja, joka sisältää purkukoodin ja pakatut tiedot. Tämä on samanlainen kuin binäärinen suoritettava pakkaus.

Itsepuristuvat kompressorit

Nämä pakkaavat alkuperäisen komentosarjan ja tuottavat uuden komentosarjan, jossa on dekompressori ja pakattua dataa.

  • JsSfx
  • Pakkaa

Redundanssia vähentävät kompressorit

Nämä poistavat välilyönnin, kommentit ja lyhentävät muuttujien ja toimintojen nimiä, mutta eivät muuta komentosarjan toimintaa.

  • Pakkaaja
  • YUI -kompressori
  • Shrinksafe
  • JSMin

Katso myös

Viitteet