UPX
보이기
발표일 | 1998년 5월 26일 |
---|---|
안정화 버전 | 3.96
/ 2020년 1월 23일 |
저장소 | |
프로그래밍 언어 | C++, 어셈블리어 |
운영 체제 | 윈도우, 리눅스, OS X, 도스, 아타리 |
플랫폼 | i386, MIPS, AMD64, ARM, PPC, m68k |
언어 | 영어 |
종류 | 실행 압축 |
라이선스 | GPL (압축된 실행 파일은 제외)[1] |
웹사이트 | upx |
UPX(Ultimate Packer for eXecutables)는 여러 운영체제에서 수많은 파일 포맷을 지원하는 오픈 소스 실행 파일 압축 프로그램이다. GNU 일반 공중 사용 허가서를 통해 공개된 자유 소프트웨어이다. 압축, 압축 해제의 기능을 모두 담당한다.
압축
[편집]UPX는 UCL이라는 이름의 데이터 압축 알고리즘을 사용하며[2], 이 구현은 사유 NRV(Not Really Vanished[3]) 알고리즘의 일부인 오픈 소스로 되어 있다.[4]
2.90 베타 이후부터 UPX는 대부분의 플랫폼을 대상으로 LZMA를 사용할 수 있으나 16비트의 오래된 컴퓨터에서 압축 해제 속도 저하 현상이 일어나기 때문에 기본값으로는 비활성화되어 있다. (강제로 사용하려면 --lzma 사용)
압축 해제
[편집]UPX는 압축 해제를 위해 두 개의 메커니즘을 지원한다.
- 인 플레이스(in-place) 테크닉
- 임시 파일로의 해제
실행 파일을 메모리로 해제하는 인 플레이스 테크닉은 모든 플랫폼에서 이용이 가능한 것은 아니다. 나머지 플랫폼에서는 임시 파일로의 압축 해제를 사용한다. 이 과정에는 추가적인 오버헤드와 기타 단점들이 동반되지만, 어떠한 실행 파일 포맷도 압축이 가능하게 한다.
임시 파일로 해제는 방식은 몇 가지 단점이 존재한다:
- suid와 같은 특수 권한이 무시된다.
argv[0]
의 의미가 없어진다.- 여러 인스턴스로 실행 중인 실행 프로그램들은 공통된 세그먼트를 공유할 수 없다.
수정되지 않은 UPX 압축이 자주 발견되며 바이러스 검사 소프트웨어 스캐너를 통해 압축이 해제된다. UPX 또한 이미 압축된 미수정 실행 파일들의 압축을 해제할 수 있는 기능이 자체 내장되어 있다.
지원 포맷
[편집]- ARM/pe
- atari/tos
- *BSD/i386
- djgpp2/coff
- dos/com
- dos/exe
- dos/sys
- 리눅스/i386 a.out
- 리눅스/ELF: i386, x86-64, ARM, 파워PC
- 리눅스/커널: i386, x86-64, ARM
- mach/ppc32, mach/i386
- rtm32/pe
- tmt/adam
- ps1/exe
- watcom/le
- win32/pe (닷넷 프레임워크를 사용하여 만든 파일은 제외)
각주
[편집]외부 링크
[편집]이 글은 소프트웨어에 관한 토막글입니다. 여러분의 지식으로 알차게 문서를 완성해 갑시다. |