Bir Windows yürütülebilir sıkıştırmak için UPX kullanılarak herhangi bir downsides var mıdır?

oy
34

Ben kullandım UPX benim Windows çalıştırılabilir boyutunu azaltmak için önce, ama ben bu doğurabileceği olumsuz yan etkilere naif olduğumu itiraf etmeliyim. Bu ambalaj her dezavantajı nedir / açma?

Herkes UPX-ing DEĞİL tavsiye edilmesine yönelik bir yürütülebilir senaryo vardır (örneğin bir DLL, Windows hizmeti yazarken veya Vista veya Win7 hedeflerken)? Ben Delphi benim kod çoğu yazma, ama ben de C / C ++ yürütülebilir sıkıştırmak için UPX kullandım.

Bir yan not etmek, ediyorum değil disassemblers benim exe korumak için bazı girişimde UPX çalışan, sadece yürütülebilir boyutunu azaltmak ve üstünkörü kurcalamayı önlemek için.

Oluştur 09/12/2008 saat 18:53
kaynak kullanıcı
Diğer dillerde...                            


12 cevaplar

oy
45

nedeni EXE kompresör kullanılarak kötü yanları vardır olduğunu. En önemlisi:

sıkıştırılmış EXE / DLL başlatma üzerine, tüm kod sistem belleği yetersiz ve takas dosyasına erişmek zorunda kalır eğer diski dayak neden olabilir tek geçişte belleğe disk görüntüsü, gelen genişletilir. Buna karşılık, sıkıştırılmamış EXE / DLL ile, OS talep üzerine kod sayfalarında (yani onlar yürütür olduğunda) için bellek ayırır.

sıkıştırılmış EXE / DLL birden çok örneği bellekte kodunun birden çok örneğini oluşturmak. Eğer (sıkıştırma öncesi) kod 1 MB içeren sıkıştırılmış EXE var ve kullanıcı yaklaşık olarak 4 MB bellek boşa bunun 5 örneklerini başlarsa. Aynı şekilde, 1 MB bir DLL var ve onu 5 çalışan uygulamalar, boşa belleğin yaklaşık 4 MB tarafından kullanılması halinde. sıkıştırılmamış EXE / DLL ile, kod sadece bir kez hafızada saklanır ve örneği arasında paylaşılır.

http://www.jrsoftware.org/striprlc.php#execomp

Cevap 09/12/2008 saat 19:11
kaynak kullanıcı

oy
18

Ben bu henüz söz ama UPX dolu yürütülebilir kullanarak da malware istatistiksel bir sürü de UPX kullandığından sezgisel anti-virüs yazılımından yanlış-pozitif üretme riskini artırır edilmemiştir şaşırdım.

Cevap 10/12/2008 saat 11:04
kaynak kullanıcı

oy
12

Üç dezavantajları vardır:

  1. Düzenli EXE veya DLL, gerçekte kullanılan tek kod bellekte yüklü iken bütün kod, sanal bellekte tamamen sıkıştırılmamış olacaktır. EXE / DLL kod sadece küçük bir kısmı her çalışma kullanılır, bu özellikle geçerlidir.
  2. DLL ve EXE çalışan birden çok örneği varsa, bunların kod örneği arasında paylaşılamaz, bu nedenle daha fazla bellek kullanarak olacak.
  3. EXE / DLL zaten önbellekte ise, yayınladığınız CPU yavaşsa ya da çok hızlı depolama ortamında veya, hala gerçekleşecek zorunda kalacak dekompresyon olarak azaltılmış başlangıç ​​hızını yaşayacaksınız ve vermeyeceksin indirgenmiş boyutta yarar. Bu arda birden çok kez çağrılır bir EXE özellikle doğrudur.

Böylece yukarıdaki sakıncaları EXE veya DLL bol miktarda kaynak içeriyorsa bir sorun daha vardır, ancak dll konuştuğunuz sürece aksi halde, yürütülebilir ve kullanılabilir bellek göreli büyüklüğü göz önüne alındığında, uygulamada bir faktör pek olmayabilir yürütülebilir (sistem dLL leri) bir sürü tarafından kullanılan.

diğer yanıtlar bazı yanlış bilgiler dispell için:

  • UPX DEP korumalı makinelerde çalıştırmak için yeteneğinizi etkilemez.
  • UPX sıkıştırılmış yürütülebilir (yanı sıra diğer yürütülebilir sıkıştırma formatlarını) desteği olarak UPX, büyük anti-virüs yazılımı yeteneğini etkilemez.
  • UPX, bir süredir LZMA sıkıştırma (7Zip sıkıştırma algoritması) kullanan --lzma anahtarını kullanabilecektir olmuştur.
Cevap 11/12/2008 saat 14:22
kaynak kullanıcı

oy
9

Sadece zaman boyutu önemlidir internetten indirme işlemi sırasında olduğunu. Eğer UPX kullanıyorsanız o zaman aslında kullanırsanız daha kötü bir performans elde 7-zip (benim test 7-Zip dayalı UPX iki katı iyidir). Aslında senin performansı düşer hedef bilgisayarda sıkıştırılmış bırakıldığında Sonra (Lars'ın cevabını bakın). Yani UPX dosya boyutu için iyi bir çözüm değildir. Sadece her şeyi 7zip.

Bildiğim kadarıyla kurcalamayı önlemek için, bu bir olduğu FAIL de. UPX çok açılırken destekler. Birisi EXE değiştirmek istiyorsa o zaman o UPX ile sıkıştırmak olduğunu göreceksiniz ve sonra sıkıştırmasını. Eğer yavaşlatabilir olası kraker yüzdesi çaba ve performans kaybı haklı çıkarmaz.

Daha iyi bir çözüm ikili imzalama ya da en azından sadece bir karma kullanmak olacaktır. Basit bir karma doğrulama sistemi İkili karmasını ve gizli bir değere (genellikle bir guid) almaktır. Yalnızca EXE gizli değerini bilir, bu nedenle doğrulama için karma yeniden hesaplar zaman tekrar kullanabilirsiniz. Bu (gizli değeri alınabilir) mükemmel değildir. ideal durum belgesi ve imza kullanmak olacaktır.

Cevap 09/12/2008 saat 19:39
kaynak kullanıcı

oy
4

diskteki yürütülebilir son boyutu bugünlerde büyük ölçüde önemsizdir. Programınız daha hızlı birkaç milisaniye yük, ancak farkı çalışmaya başlayınca farksızdır olabilir.

Bazı insanlar UPX ile sıkıştırılmış sırf yürütülebilir daha şüpheli olabilir. senin son kullanıcılar bağlı olarak, bu ya da önemli bir husus olabilir veya olmayabilir.

Cevap 09/12/2008 saat 19:05
kaynak kullanıcı

oy
2

senin tek faiz yürütülebilir boyutunu azaltmak ise, o zaman birlikte ve çalışma zamanı paketleri olmadan çalıştırılabilir boyutunu karşılaştırarak denediniz mi? Ayrıca genel sizin yürütülebilir ile birlikte paketlerin boyutlarına yer zorunda kalacak Verilen, ancak aynı temel paketlerini kullanan birden yürütülebilir varsa, o zaman tasarrufu oldukça yüksek olacaktır.

bakmak için başka bir şey programınızda kullanmak grafik / glifleri olurdu. Bir global veri modülünde yer alan tek Timagelist bunları birleştirerek alanı biraz kaydedebilirsiniz yerine onları her formda tekrarladık. Sana bir TResourceStream'i kullanarak bir RCDATA kaynaktan görüntü yükleyerek bu biraz küçültmek olabilir ... her bayt iki bayt kaplıyor anlamına gelir böylece her görüntü, onaltılık olarak biçim kaynak saklanır inanıyoruz.

Cevap 09/12/2008 saat 22:32
kaynak kullanıcı

oy
2

Ben yönetilen bir aksamının üzerine kullanmaya çalıştı son kez, bu çalışma zamanı yüklemek için reddetti o kadar kötü munged. Ben de bunu kullanmak istiyorum olmaz aklınıza gelebilecek tek zaman (gerçekten, o kadar uzun denedim beri oldu, ve durum daha da iyi şimdi olabileceğini). Ben yönetilmeyen ikili her çeşit geçmişte yaygın olarak kullanılan ve bir sorunu olmadı.

Cevap 09/12/2008 saat 19:00
kaynak kullanıcı

oy
1

Hiçbir dezavantajları vardır.

Ama sadece Bilginize, UPX ilgili çok yaygın bir yanlış kanı vardır as--

kaynaklar sadece sıkıştırılmış olan DEĞİLDİR

Esasen bir "yükleyici" görev ve "gerçek" yürütülebilir sahip yeni yürütülebilir inşa ediyoruz, iyi, kaynakların tipleri vardı bakılmaksızın yükleyici yürütülebilir (bir ikili veri kaynağı olarak yerleştirilen, bölüm-soyulmuş ve sıkıştırılmış ediliyor orijinal çalıştırılabilir).

Ters mühendislik yöntemleri ve kullanma araçları eğitim amaçlı kaldırmaz veya diğer özgün yürütülebilir ilgili size "yükleyici yürütülebilir" ile ilgili bilgileri gösterecektir değil, değişken bilgilere.

UPX tarafından sıkıştırılmamış yürütülebilir

UPX sıkıştırılır yürütülebilir

Cevap 21/10/2015 saat 18:24
kaynak kullanıcı

oy
1

açık lisans malware yazarlarının kullanabilir ve cezasız değiştirmenize izin veren çünkü UPX çok yanlış alarmlar var nedenidir. Elbette bu konu endüstrisine doğasında vardır, ama ne yazık ki büyük bir UPX projesi bu sorundan kurtulamadı.

GÜNCELLEME: taggant Proje tamamlanana kadar, yetenek UPX destekliyorsa varsayarak artacaktır yanlış pozitif neden olmadan UPX (veya başka bir şey) kullanmak için unutmayın.

Cevap 26/09/2010 saat 17:34
kaynak kullanıcı

oy
1

'Bilinmeyen' virüs aramak Virüs tarayıcılar bayrak UPX virüslü olarak yürütülebilir sıkıştırılmış olabilir. Birkaç virüsler kendilerini gizlemek için kullanın UPX çünkü bu söylendi. Ben yazılımı UPX kullanmış ve McAfee virüs içeriyor şeklinde dosyayı bayrak olacak.

Cevap 02/05/2009 saat 01:47
kaynak kullanıcı

oy
1

IMHO rutin UPXing anlamsız, ama sebepler yukarıda yazıldığından, çoğunlukla, bellek disk daha pahalıdır.

Erik: LZMA saplama büyük olabilir. Algoritma daha iyi olsa bile, her zaman net artı olmak değildir.

Cevap 25/04/2009 saat 23:32
kaynak kullanıcı

oy
0

Bunun olduğu bilgisayarlarda işe yaramayabilir olasılığı vardır inanıyoruz DEP (Data Execution Prevention) döndü.

Cevap 09/12/2008 saat 19:48
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more