UPX

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
UPX
the Ultimate Packer for eXecutables
발표일 1998년 5월 26일, 6548일 경과
최근 버전 3.09.1 (3.91) / 2013년 09월 30일, 942일 경과
프로그래밍 언어 C++, 어셈블리어
운영 체제 윈도, 리눅스, OS X, 도스, 아타리
플랫폼 i386, MIPS, AMD64, ARM, PPC, m68k
언어 영어
종류 실행 압축
라이선스 GPL (압축된 실행 파일은 제외)[1]
웹사이트 upx.sf.net

UPX(Ultimate Packer for eXecutables)는 여러 운영체제에서 수많은 파일 포맷을 지원하는 오픈 소스 실행 파일 압축 프로그램이다. GNU 일반 공중 사용 허가서를 통해 공개된 자유 소프트웨어이다. 압축, 압축 해제의 기능을 모두 담당한다.

압축[편집]

UPX는 UCL이라는 이름의 데이터 압축 알고리즘을 사용하며[2], 이 구현은 사유 NRV(Not Really Vanished[3]) 알고리즘의 일부인 오픈 소스로 되어 있다.[4]

2.90 베타 이후부터 UPX는 대부분의 플랫폼을 대상으로 LZMA를 사용할 수 있으나 16비트의 오래된 컴퓨터에서 압축 해제 속도 저하 현상이 일어나기 때문에 기본값으로는 비활성화되어 있다. (강제로 사용하려면 --lzma 사용)

압축 해제[편집]

UPX는 압축 해제를 위해 두 개의 메커니즘을 지원한다.

  1. 인 플레이스(in-place) 테크닉
  2. 임시 파일로의 해제

실행 파일을 메모리로 해제하는 인 플레이스 테크닉은 모든 플랫폼에서 이용이 가능한 것은 아니다. 나머지 플랫폼에서는 임시 파일로의 압축 해제를 사용한다. 이 과정에는 추가적인 오버헤드와 기타 단점들이 동반되지만, 어떠한 실행 파일 포맷도 압축이 가능하게 한다.

임시 파일로 해제는 방식은 몇 가지 단점이 존재한다:

  • suid와 같은 특수 권한이 무시된다.
  • argv[0]의 의미가 없어진다.
  • 여러 인스턴스로 실행 중인 실행 프로그램들은 공통된 세그먼트를 공유할 수 없다.

수정되지 않은 UPX 압축이 자주 발견되며 바이러스 검사 소프트웨어 스캐너를 통해 압축이 해제된다. UPX 또한 이미 압축된 미수정 실행 파일들의 압축을 해제할 수 있는 기능이 자체 내장되어 있다.

지원 포맷[편집]

각주[편집]

  1. http://upx.sourceforge.net/upx-license.html
  2. http://www.oberhumer.com/opensource/ucl/
  3. http://www.oberhumer.com/products/nrv/
  4. http://upx.hg.sourceforge.net/hgweb/upx/upx/file/5d434f4a3fe7/README.SRC

바깥 고리[편집]