UPX

UPX
Pierwsze wydanie 26 maja 1998 ; 24 lata temu ( 1998-05-26 )
Wersja stabilna
4.0.1 / 16 listopada 2022 r . ; 3 miesiące temu ( 2022-11-16 )
Magazyn
Napisane w C++ , montaż
System operacyjny Microsoft Windows , Linux , macOS , DOS , Atari TOS
Platforma i386 , MIPS , AMD64 , ARM , PowerPC , m68k
Dostępne w język angielski
Typ Kompresja wykonywalna
Licencja GPL z wyjątkiem skompresowanych plików wykonywalnych, zastrzeżona dla algorytmu kompresji w dystrybucjach binarnych
Strona internetowa upx .github .io

UPX ( Ultimate Packer for Executables ) to darmowy program do pakowania plików wykonywalnych o otwartym kodzie źródłowym, obsługujący wiele formatów plików z różnych systemów operacyjnych.

Kompresja

UPX używa algorytmu kompresji danych o nazwie UCL, który jest otwartą implementacją części zastrzeżonego algorytmu NRV ( Not Really Vanished ).

UCL został zaprojektowany tak, aby był na tyle prosty, że dekompresor można zaimplementować w zaledwie kilkuset bajtach kodu. UCL nie wymaga przydzielenia dodatkowej pamięci do dekompresji, co jest znaczną zaletą, która oznacza, że ​​plik wykonywalny spakowany w UPX zwykle nie wymaga dodatkowej pamięci.

UPX (od wersji 2.90 beta) może używać LZMA na większości platform; jest to jednak domyślnie wyłączone dla wersji 16-bitowej ze względu na niską prędkość dekompresji na starszych komputerach (użyj opcji --lzma , aby ją wymusić).

Począwszy od wersji 3.91, UPX obsługuje również 64-bitowe (x64) pliki PE na platformie Windows . Ta funkcja jest obecnie zadeklarowana jako eksperymentalna .

Dekompresja

UPX obsługuje dwa mechanizmy dekompresji: technikę in-place i ekstrakcję do pliku tymczasowego .

Technika in-place, która dekompresuje plik wykonywalny do pamięci, nie jest możliwa na wszystkich obsługiwanych platformach. Ma tę zaletę, że jest bardziej wydajny pod względem pamięci, a środowisko skonfigurowane przez system operacyjny pozostaje poprawne.

Reszta używa ekstrakcji do pliku tymczasowego. Ta procedura wiąże się z dodatkowymi kosztami i innymi wadami; umożliwia jednak spakowanie dowolnego formatu pliku wykonywalnego. Metoda ekstrakcji do pliku tymczasowego ma kilka wad:

  • Specjalne uprawnienia są ignorowane, takie jak suid .
  • argv[0] nie będzie miało znaczenia.
  • Wiele uruchomionych instancji pliku wykonywalnego nie może współdzielić wspólnych segmentów.

Niezmodyfikowane opakowanie UPX jest często wykrywane i rozpakowywane przez skanery oprogramowania antywirusowego . UPX ma również wbudowaną funkcję rozpakowywania niezmodyfikowanych plików wykonywalnych spakowanych razem z nim.

Obsługiwane formaty

UPX obsługuje następujące formaty:

UPX obecnie nie obsługuje plików PE zawierających kod CIL przeznaczony do uruchamiania w .NET Framework .

Notatki

Linki zewnętrzne