Yürütülebilir sıkıştırma - Executable compression
Çalıştırılabilir sıkıştırma herhangi bir yolla bir sıkıştırarak bir yürütülebilir dosya ve bir tek yürütülebilir açma kodu ile veri sıkıştırılmış bir araya getirilmesi. Bu sıkıştırılmış yürütülebilir dosya yürütüldüğünde, açma kodu, çalıştırmadan önce sıkıştırılmış koddan orijinal kodu yeniden oluşturur. Çoğu durumda bu şeffaf bir şekilde gerçekleşir, böylece sıkıştırılmış yürütülebilir dosya orijinaliyle tamamen aynı şekilde kullanılabilir. Yürütülebilir sıkıştırıcılara genellikle "çalışma zamanı paketleyicileri", "yazılım paketleyicileri", "yazılım koruyucuları" (veya hatta " polimorfik paketleyiciler " ve " gizleyici araçlar ") denir .
Sıkıştırılmış bir yürütülebilir dosya, sıkıştırılmış bir yürütülebilir dosyanın ilgili açma koduyla birlikte yürütülebilir bir dosyada paketlendiği kendi kendine açılan bir arşiv olarak kabul edilebilir . Bazı sıkıştırılmış yürütülebilir dosyalar, orijinal program dosyasını doğrudan yürütülmeden yeniden oluşturmak için sıkıştırılabilir. Bunu yapmak için kullanılabilecek iki program CUP386 ve UNP'dir.
Sıkıştırılmış yürütülebilir dosyaların çoğu, bellekteki orijinal kodu açar ve çoğunun çalışması için biraz daha fazla bellek gerekir (çünkü açma kodunu, sıkıştırılmış verileri ve sıkıştırılmış kodu açmaları gerekir). Ayrıca, bazı sıkıştırılmış yürütülebilir dosyaların, sıkıştırılmış yürütülebilir dosyayı çalıştırmadan önce dosya sistemine yazanlar gibi ek gereksinimleri vardır.
Yürütülebilir sıkıştırma, ikili yürütülebilir dosyalarla sınırlı değildir, JavaScript gibi komut dosyalarına da uygulanabilir . Çoğu komut dosyası dili, yüksek yedekliliğe sahip insan tarafından okunabilir kod üzerinde çalışmak üzere tasarlandığından , sıkıştırma çok etkili olabilir ve değişkenleri ve işlevleri tanımlamak için kullanılan uzun adları daha kısa sürümlerle değiştirmek ve/veya boşlukları kaldırmak kadar basit olabilir .
Avantajlar ve dezavantajlar
Yazılım dağıtıcıları, öncelikle yazılımlarının ikincil depolama gereksinimlerini azaltmak için çeşitli nedenlerle yürütülebilir sıkıştırma kullanır ; Yürütülebilir sıkıştırıcılar, yürütülebilir kodu sıkıştırmak için özel olarak tasarlandığından, genellikle gzip , zip veya bzip2 gibi standart veri sıkıştırma tesislerinden daha iyi sıkıştırma oranı elde ederler . Bu, yazılım dağıtıcılarının seçtikleri dağıtım ortamının ( CD-ROM , DVD-ROM veya Disket gibi) kısıtlamaları dahilinde kalmasına veya müşterilerin İnternet üzerinden dağıtılan yazılımlara erişmek için ihtiyaç duyduğu süreyi ve bant genişliğini azaltmalarına olanak tanır .
Çalıştırılabilir sıkıştırma de sık caydırmak için kullanılan ters mühendislik veya çalıştırılabilir içeriğini görünmez kılmak için (örneğin, mevcudiyetinin gizlenmesi için kötü amaçlı gelen antivirüs tarayıcıları ) sıkıştırma ve / veya ilave tescilli yöntemlerle şifreleme . Yürütülebilir sıkıştırma, doğrudan demontajı önlemek , dize değişmezlerini maskelemek ve imzaları değiştirmek için kullanılabilir . Bu, tersine mühendislik olasılığını ortadan kaldırmasa da, süreci daha maliyetli hale getirebilir.
Sıkıştırılmış bir yürütülebilir dosya, dosya sisteminde daha az depolama alanı gerektirir, bu nedenle dosya sisteminden belleğe veri aktarımı için daha az zaman gerekir. Öte yandan, yürütme başlamadan önce verilerin sıkıştırmasını açmak biraz zaman alır. Ancak, çeşitli depolama ortamlarının hızı ortalama işlemci hızlarına ayak uyduramadı, bu nedenle depolama genellikle darboğaz oluyor. Böylece sıkıştırılmış yürütülebilir dosya çoğu yaygın sistemde daha hızlı yüklenir. Modern masaüstü bilgisayarlarda, yürütülebilir dosya alışılmadık derecede büyük olmadığı sürece bu nadiren fark edilir, bu nedenle yükleme hızı, yürütülebilir bir dosyayı sıkıştırmanın veya sıkıştırmaya karşı birincil neden değildir.
Diskten talep üzerine yürütülebilir görüntüleri okuyan işletim sistemlerinde (bkz. sanal bellek ), sıkıştırılmış yürütülebilir dosyalar bu işlemi daha az verimli hale getirir. Açıcı saplaması, sıkıştırılmış verileri tutmak için bir bellek bloğu ayırır; bu, çalıştırılabilir dosya yüklü kaldığı sürece, kullanılmış olsun ya da olmasın, ayrılmış olarak kalır ve diğer uygulamalarla bellek kaynakları için rekabet eder. İşletim sistemi bir takas dosyası kullanıyorsa, kullanılmayan veri bloklarını atmak ve gerekirse yürütülebilir görüntüden yeniden yüklemek yerine belleği boşaltmak için sıkıştırılmış verinin bu dosyaya yazılması gerekir. Bu genellikle fark edilmez, ancak bir yürütülebilir dosya aynı anda birden fazla yüklendiğinde bir sorun haline gelir—işletim sistemi önceden yüklemiş olduğu veri bloklarını yeniden kullanamaz, verilerin yeni bir bellek bloğuna açılması gerekir ve kullanılmadığı takdirde bağımsız olarak değiştirilebilir. Ek depolama ve zaman gereksinimleri, tipik olarak aynı anda birden fazla kez çalıştırılan yürütülebilir dosyaların sıkıştırılıp sıkıştırılmayacağının dikkatlice tartılması gerektiği anlamına gelir.
Diğer bir dezavantaj, yalnızca statik olarak bağlantılı çıkarıcı saplaması görünür olduğundan, bazı yardımcı programların artık çalışma zamanı kitaplığı bağımlılıklarını tanımlayamamasıdır .
Ayrıca, bazı eski virüs tarayıcıları , sıkıştırılmış tüm yürütülebilir dosyaları virüs olarak bildirir, çünkü dekompresör saplamaları bunlarla bazı özellikleri paylaşır. Çoğu modern virüs tarayıcısı, içindeki gerçek yürütülebilir dosyayı kontrol etmek için birkaç farklı yürütülebilir sıkıştırma katmanını açabilir, ancak bazı popüler virüsten koruma ve kötü amaçlı yazılımdan koruma tarayıcıları, sıkıştırılmış yürütülebilir dosyalar üzerinde yanlış pozitif alarmlarla ilgili sorunlar yaşadı. Sorununu çözmek için bir girişimde zararlı yazılım yardımı ile karartılmış çalışma zamanı paketleyicilerinde IEEE Sanayi Bağlantıları Güvenlik Grubu bir tanıttı yazılım taggant sistemi.
Yürütülebilir sıkıştırma, bilgisayarların hem yavaş hem de düşük kapasiteli ortamlar olan disketlerin ve küçük sabit sürücülerin depolama kapasitesiyle sınırlı olduğu zamanlarda daha popülerdi ; kullanıcının yazılımı her kullanmak istediğinde bir arşiv dosyasını manuel olarak açma zorunluluğu olmadan bilgisayarın aynı miktarda alanda daha fazla yazılım depolamasına izin verdi. Ancak, bilgisayarlarda artan depolama kapasitesi nedeniyle yürütülebilir sıkıştırma daha az popüler hale geldi. Bazı yarışmalara girmek için demoların 64 kilobayt gibi bir boyut sınırı içinde kalması gereken demoscene'de kullanımı vardır . Yalnızca yükleme süresini artıran çok gelişmiş sıkıştırma biçimleri, yürütülebilir bir dosyayı bu yarışmalara girecek kadar küçük tutar.
Yürütülebilir paketleyicilerin listesi
CP/M ve MSX-DOS yürütülebilir dosyası
CP/M / MSX-DOS .COM dosyaları için bilinen yürütülebilir sıkıştırıcılar :
- PMexe (1990'dan beri Yoshihiko Mino tarafından yazılmıştır, PMARC.COM+PMEXE.CPM)
DOS yürütülebilir
DOS yürütülebilir dosyaları için bilinen yürütülebilir sıkıştırıcılar ( .COM veya .EXE ):
- Realia Spacemaker (1982'den beri, Robert BK Dewar , SM.COM, "MEMORY$" imzası tarafından yazılmıştır )
- Microsoft EXEPACK (1985'ten beri, Reuben Borman , EXEPACK.EXE, LINK.EXE /E[XEPACK], imza "RB" tarafından yazılmıştır )
- LZEXE (1989'dan beri Fabrice Bellard , LZEXE.EXE tarafından yazılmıştır )
- PKWare PKLite (1990'dan beri Phil Katz , PKLITE.EXE tarafından yazılmıştır )
- DİYET (1991'den beri, Teddy Matsumoto , DIET.EXE tarafından yazılmıştır )
- TINYPROG (TINYPROG.EXE)
- RJS Software RJCRUSH (1994'ten beri, Roland Skinner, RJCRUSH.EXE tarafından yazılmıştır)
- XPA (1995'ten beri, JauMing Tseng, XPA.EXE tarafından yazılmıştır)
- Ibsen Yazılımı aPACK (1997'den beri, Jørgen Ibsen, APACK.EXE tarafından yazılmıştır)
- UPX (1998'den beri, Markus FXJ Oberhumer ve László Molnár tarafından yazılmıştır)
- 32LiTE (1998'den beri, Oleg Prokhorov tarafından yazılmıştır, 32LITE.EXE)
- Bilgi Dinamiği LZW Kompresörü
- WWpack (Piotr Warezak ve Rafal Wierzbicki, WWPACK.EXE tarafından yazılmıştır)
- 624 (yalnızca 25 KB'den küçük .COM dosyaları için, LZW kullanır )
- AINEXE
- AvPack
- ComPack
- HASP Zarfı
- LGLZ
- PMWLITE
- ProPack
- UCEXE
- WDOSX
- XE
- XPack
OS/2 yürütülebilir
OS/2 kapsamında bilinen yürütülebilir kompresörler :
- NeLite
- LxLite
Yeni Yürütülebilir Dosya
Yeni Yürütülebilir Dosyalar için bilinen yürütülebilir kompresörler :
- PaketWin
- PKWare PKLite (sürüm 2.01'den itibaren)
- WinLite
Taşınabilir Yürütülebilir Dosya
Taşınabilir Yürütülebilir Dosyalar için bilinen yürütülebilir kompresörler :
Not: Mor renkli istemciler artık geliştirme aşamasında değildir.
İsim | En son kararlı | Yazılım lisansı | x86-64 desteği |
---|---|---|---|
32Lit | |||
uzaylı | 1.4 (17 Ağustos 2020 ) | tescilli | Numara |
VEpakk2 | |||
Armadillo | 9.62 (7 Haziran 2013 ) | tescilli | Evet |
ASPack | 2.40 (7 Aralık 2018 ) | tescilli | Evet |
ASPR (ASProtect) | 2,78 (7 Aralık 2018 ) | tescilli | Evet |
BeRoEXEPacker | |||
BIN-crypter | |||
Kutulu Uygulama Paketleyici | 3.3 (26 Temmuz 2015 ) | tescilli | Evet |
CExe | 1.0b (20 Temmuz 2001 ) | GPL | Numara |
kıvırcık | 2.2 (15 Haziran 2019 ) | ücretsiz | Evet |
noktaBundle | 1.3 (4 Nisan 2013 ) | tescilli | Evet |
Enigma Koruyucu | 6.60 (21 Ağustos 2019 ) | tescilli | Evet |
Enigma Sanal Kutusu | 9.40 (10 Ekim 2019 ) | tescilli | Evet |
exe32 paketi | |||
EXE Paketi | 3.11 (7 Ocak 2011 ) | tescilli | ? |
EXECryptor | |||
EXE Gizliliği | 4.14 (29 Haziran 2011 ) | tescilli | ? |
eXpressor | 1.8.0.1 (14 Ocak 2010 ) | tescilli | ? |
FSG | 2.0 (24 Mayıs 2004 ) | ücretsiz | Numara |
kkrunchy src | 0.23a4 (Bilinmiyor) | Kamu malı | Numara |
KAFESE KOYMAK | 1.1 (Bilinmeyen) | ücretsiz | Numara |
MPRESS | 2.19 (2 Ocak 2012 ) | ücretsiz | Evet |
MuCruncher | |||
NeoLite | |||
.netshrink | 2.7 (2 Temmuz 2016 ) | tescilli | Evet |
NsPack | |||
obsidyum | 1.6 (11 Nisan 2017 ) | tescilli | Evet |
PEKompakt | |||
PELlock | 2.06 (15 Ağustos 2016 ) | tescilli | Numara |
PE Paketi | |||
PESpin | 1.33 (3 Mayıs 2011 ) | ücretsiz | Evet |
minyon | 2.4 (22 Eylül 2016 ) | ücretsiz | Numara |
PKLite32 | |||
RLPack Temel | 1.21 (31 Ekim 2008 ) | GPL | Numara |
Shrinker32 | |||
Akıllı Paketleyici Pro X | 2.0.0.1 (3 Haziran 2019 ) | tescilli | Evet |
Themida/WinLicense | 3.0 (24 Ekim 2019 ) | tescilli | Evet |
Upack | |||
UPX | 3,96 (23 Ocak 2020 ) | GPL | deneysel |
VMProtect | 3.4 (3 Ağustos 2019 ) | tescilli | Evet |
WWPack32 | |||
XComp/XPack | 0.98 (18 Şubat 2007 ) | ücretsiz | Numara |
Yoda'nın Şifresi | |||
YZPack |
ELF dosyaları
ELF dosyaları için bilinen yürütülebilir sıkıştırıcılar :
- gzexe (bir kabuk komut dosyası saplaması ve gzip kullanır , çoğu Unix benzeri sistemde çalışır)
- HASP Zarfı
- UPX
- 624 (Linux/386 için)
CLI montaj dosyaları
CLI montaj dosyaları için bilinen yürütülebilir sıkıştırıcılar :
- .NETZ
- NsPack
- bayan
- HASP Zarfı
- .netshrink
- noktaBundle
- Exepack.NET
- DotProtect: .net ve mono için ticari koruyucu/paketleyici. Çevrimiçi doğrulamalar ve "endüstri standardı şifreleme" içerir.
Mac OS Classic uygulama dosyaları
Mac OS Classic uygulama dosyaları için bilinen yürütülebilir sıkıştırıcılar :
- Uygulama Mengenesi
- StuffIt InstallerMaker
Mach-O (Apple Mac OS X) dosyaları
Mach-O (Apple Mac OS X) dosyaları için bilinen yürütülebilir sıkıştırıcılar :
- HASP Zarfı
- UPX
- VMProtect
Amiral 64 ve VIC 20
Commodore 64 ve VIC 20'deki yürütülebilir dosyalar için bilinen yürütülebilir kompresörler :
- PuCrunch
- Exomizer
- ByteBoozer
Amiral Amiga
Commodore Amiga serisindeki yürütülebilir dosyalar için bilinen yürütülebilir kompresörler :
- güç paketleyici
- Titanik kırıcı
- içeri fırlatıcı
- TNM kırıcı
- küçülen
- PaketAteş
Java
Java için bilinen yürütülebilir sıkıştırıcılar :
JAR dosyaları:
- HASP Zarfı
- paket200
- ProGuard
SAVAŞ dosyaları:
- HASP Zarfı
JavaScript komut dosyaları
JavaScript komut dosyalarına uygulanabilecek iki tür sıkıştırma vardır :
- Komut dosyasındaki fazlalığı azaltın (yorumları, boşlukları kaldırarak ve değişken ve işlev adlarını kısaltarak). Bu, betiğin davranışını değiştirmez.
- Orijinal komut dosyasını sıkıştırın ve açma kodunu ve sıkıştırılmış verileri içeren yeni bir komut dosyası oluşturun. Bu, ikili yürütülebilir sıkıştırmaya benzer.
Kendinden sıkıştırmalı kompresörler
Bunlar, orijinal komut dosyasını sıkıştırır ve bir açıcı ve sıkıştırılmış veri içeren yeni bir komut dosyası çıkarır.
- JsSfx
- paketle
Yedekliliği azaltan kompresörler
Bunlar boşlukları kaldırır, yorumları kaldırır ve değişken ve işlev adlarını kısaltır, ancak komut dosyasının davranışını değiştirmez.
- paketleyici
- YUI kompresörü
- Shrinksafe
- JSMin
Ayrıca bakınız
- Veri sıkıştırma
- Disk sıkıştırma
- RAM sıkıştırma
- yürütülebilir
- Kolmogorov karmaşıklığı
- Kendiliğinden açılan arşiv