맨위로가기

UPX

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

UPX는 UCL 데이터 압축 알고리즘을 사용하여 다양한 실행 파일 형식을 압축하는 데 사용되는 오픈 소스 실행 파일 압축기이다. UCL은 압축 해제 코드가 작고 메모리 할당이 필요하지 않도록 설계되었으며, 대부분의 플랫폼에서 LZMA 알고리즘을 사용할 수도 있다. UPX는 인플레이스 방식과 임시 파일을 이용한 압축 해제를 지원하며, 윈도우, 리눅스, macOS, DOS 등 다양한 운영 체제와 실행 파일 형식을 지원한다.

더 읽어볼만한 페이지

  • 자유 압축 소프트웨어 - Gzip
    gzip은 DEFLATE 알고리즘을 기반으로 데이터를 압축하는 파일 형식으로, 매직 넘버, 헤더, 압축된 페이로드 등을 포함하며, 단일 파일 압축에 주로 사용되고 HTTP 압축 및 다양한 응용 분야에서 활용된다.
  • 자유 압축 소프트웨어 - Bzip2
    Bzip2는 줄리안 세워드가 개발한 자유 소프트웨어로, 버로우즈-휠러 변환, MTF 변환, 허프만 부호화 등의 압축 기법을 사용하여 gzip이나 ZIP보다 높은 압축률을 제공하지만 압축 속도가 느린 블록 정렬 압축 알고리즘이다.
  • 압축 소프트웨어 - WinRAR
    WinRAR은 RAR 및 ZIP 등 다양한 파일 형식을 지원하며, 압축 파일 복구, 강력한 암호화 등의 기능을 제공하는 셰어웨어 압축 유틸리티이다.
  • 압축 소프트웨어 - ARJ
    ARJ는 다양한 소프트웨어 유틸리티에서 압축 해제가 가능한 파일 포맷으로, macOS에서는 독립 실행형 유틸리티를 통해 압축을 해제할 수 있다.
  • 1998년 소프트웨어 - OpenSSL
    OpenSSL은 1998년에 설립된 암호화 도구 프로젝트로, 다양한 암호화 알고리즘과 프로토콜을 지원하며, 아파치 라이선스를 채택했고, 보안 문제와 API 호환성 문제 등의 비판을 받았다.
  • 1998년 소프트웨어 - 야후! 메신저
    야후! 메신저는 야후!에서 제공한 인스턴트 메신저 서비스로, VoIP, 파일 공유, 오프라인 메시징, 플러그인 확장 등 다양한 기능을 지원하고 여러 운영체제용 클라이언트를 제공했으며 윈도우 라이브 메신저와 상호 운용되기도 했다.
UPX - [IT 관련 정보]에 관한 문서
기본 정보
UPX 로고
출시일1998년 5월 26일
최신 버전4.2.2
최신 버전 출시일2024년 1월 3일
프로그래밍 언어C++
어셈블리어
운영 체제윈도우
리눅스
macOS
DOS
Atari TOS
플랫폼i386
MIPS
AMD64
ARM
PPC
m68k
언어영어
장르실행 압축
라이선스GPL (압축된 실행 파일은 제외)
웹사이트UPX 공식 웹사이트
설명
설명UPX (Ultimate Packer for eXecutables)는 실행 파일 압축 소프트웨어이다.

2. 압축

UPX는 주로 UCL[15]이라는 데이터 압축 알고리즘을 사용하며, 이는 NRV(''Not Really Vanished''[16]) 알고리즘의 일부를 오픈 소스로 구현한 것이다.[17] 2.90 베타 버전부터 LZMA를 사용할 수 있으나, 16비트 구형 컴퓨터에서는 압축 해제 속도가 느려 기본적으로 비활성화되어 있다. (강제로 사용하려면 `--lzma` 옵션을 사용해야 한다.) 버전 3.91부터 UPX는 윈도우 플랫폼에서 64비트(x64) PE 파일도 지원하는데,[7] 이 기능은 현재 "실험적"으로 선언되어 있다.

2. 1. UCL (NRV) 알고리즘

UPX는 UCL[4]이라는 데이터 압축 알고리즘을 사용하며, 이는 NRV(''Not Really Vanished''[5]) 알고리즘의 일부를 오픈 소스로 구현한 것이다.[6]

UCL은 압축 해제 프로그램(디컴프레서)이 수백 바이트의 코드로 구현될 수 있을 정도로 단순하게 설계되었다. UCL은 압축 해제를 위해 추가적인 메모리 할당이 필요하지 않다. 이는 UPX로 압축된 실행 파일이 일반적으로 추가 메모리를 필요로 하지 않는다는 상당한 이점을 제공한다.

2. 2. LZMA 알고리즘

UPX는 2.90 베타 버전부터 LZMA를 지원한다.[6][13] LZMA는 더 높은 압축률을 제공하지만, 16비트 구형 컴퓨터에서는 압축 해제 속도가 느려 기본적으로 비활성화되어 있다.[6][13] 16비트 환경에서도 `--lzma` 옵션을 사용하여 LZMA 압축을 활성화할 수 있다.[6][13]

3. 압축 해제

UPX는 인플레이스(in-place) 방식과 임시 파일을 이용한 압축 해제 방식을 모두 지원한다.[1] 수정되지 않은 UPX 압축은 백신 소프트웨어 스캐너를 통해 압축이 해제되는 경우가 많다.[1] UPX는 자체적으로 압축된 미수정 실행 파일의 압축을 해제할 수 있는 기능도 내장하고 있다.[1]

3. 1. 인플레이스(In-place) 방식

UPX는 실행 파일을 메모리에서 직접 압축 해제하는 인플레이스(in-place) 방식을 지원한다. 이 방식은 메모리 효율성이 높고 운영 체제 환경 설정을 유지할 수 있다는 장점이 있지만, 모든 플랫폼에서 지원되지는 않는다.[1] 다른 플랫폼에서는 임시 파일로 압축을 해제하는 방식을 사용한다.[1]

3. 2. 임시 파일 방식

UPX는 실행 파일을 압축 해제하기 위해 두 가지 방식을 지원하는데, 그 중 하나가 임시 파일 방식이다. 이 방식은 인플레이스(in-place) 방식이 지원되지 않는 플랫폼에서 사용된다. 임시 파일 방식은 실행 파일을 임시 파일로 압축 해제한다. 이 방식은 추가적인 오버헤드와 다음과 같은 단점들을 수반하지만, 모든 실행 파일 형식을 압축할 수 있게 해준다.

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


수정되지 않은 UPX 압축은 종종 백신 소프트웨어 스캐너에 의해 감지되어 압축 해제된다. UPX는 또한 자체적으로 압축된 수정되지 않은 실행 파일을 압축 해제하는 내장 기능을 가지고 있다.[1]

4. 지원 포맷

UPX는 다양한 실행 파일 포맷을 지원한다.[8]

플랫폼포맷
ARM/pe
아타리/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(단, 닷넷 프레임워크를 사용하여 만든 파일은 제외)


4. 1. 윈도우

UPX는 PE (EXE 및 동적 링크 라이브러리 파일) 형식을 지원하며, 지원 대상은 다음과 같다.[8]

  • ARM (Windows CE)
  • 32비트 x86 (Windows 데스크톱)
  • 64비트 x86-64 (Windows 데스크톱, 여전히 실험적)
  • RTM32 (보랜드 C/파스칼 컴파일러에서 생성됨)[9]


.NET Framework에서 실행되도록 설계된 CIL 코드가 포함된 PE 파일은 현재 지원하지 '''않는다'''.

4. 2. 리눅스

UPX는 리눅스에서 다음과 같은 형식을 지원한다.[8]

4. 3. macOS

Mach-O/ppc32, Mach-O/i386 (Google Go를 사용하여 생성된 것은 제외)[8]

4. 4. DOS

4. 5. 기타

5. 기타 기능

수정되지 않은 UPX로 압축된 파일은 백신 소프트웨어 스캐너에 의해 탐지되어 압축 해제될 수 있다.[1] UPX는 자체적으로 압축된 실행 파일의 압축을 해제하는 기능도 내장하고 있다.[1]

참조

[1] 웹사이트 UPX License Agreement https://upx.github.i[...] 2016-09-14
[2] 서적 Windows Malware Analysis Essentials https://books.google[...] Packt Publishing 2015
[3] 서적 The Rootkit Arsenal https://books.google[...] Jones & Bartlett Learning 2013
[4] 웹사이트 UCL data compression library https://www.oberhume[...] 2022-01-11
[5] 웹사이트 NRV Compression Library https://www.oberhume[...]
[6] 웹사이트 The UPX Hacker's Guide https://github.com/u[...] 2022-02-19
[7] 웹사이트 UPX News https://upx.github.i[...] 2016-09-14
[8] 간행물 upx ManKier
[9] 웹사이트 dos extender rtm32 - fileformat of the stub? \ VOGONS https://www.vogons.o[...] 2022-01-11
[10] 웹사이트 http://upx.github.io[...]
[11] 웹사이트 http://www.oberhumer[...]
[12] 웹사이트 http://www.oberhumer[...]
[13] 웹사이트 http://upx.hg.source[...]
[14] 웹사이트 http://upx.sourcefor[...]
[15] 웹사이트 http://www.oberhumer[...]
[16] 웹사이트 http://www.oberhumer[...]
[17] 웹사이트 http://upx.hg.source[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com