실행 가능한 압축

Executable compression

실행 파일 압축은 실행 파일압축하고 압축된 데이터를 압축 해제 코드와 결합하여 단일 실행 파일로 만드는 방법입니다.이 압축된 실행 파일이 실행되면 압축 해제 코드는 실행 전에 압축된 코드에서 원래 코드를 다시 생성합니다.대부분의 경우 이 작업은 투명하게 수행되므로 압축된 실행 파일을 원본과 동일한 방식으로 사용할 수 있습니다.실행 가능한 압축기는 종종 "런타임 패커", "소프트웨어 패커", "소프트웨어 프로텍터" (또는 "다형 패커" 및 "복잡한 도구")라고 불립니다.

압축된 실행 파일은 자기해동형 아카이브로 간주할 수 있으며, 여기서 압축된 실행 파일은 실행 파일 내의 관련 압축 해제 코드와 함께 패키지화된다.압축된 실행 파일의 압축을 해제하여 직접 실행하지 않고 원래 프로그램 파일을 재구성할 수 있습니다.이를 위해 사용할 수 있는 프로그램은 CUP386과 UNP입니다.

대부분의 압축된 실행 파일은 원래 코드를 메모리에 압축 해제하고 실행하는 데 약간 더 많은 메모리가 필요합니다(압축 해제 코드, 압축된 데이터 및 압축 해제된 코드를 저장해야 하기 때문입니다).또한 일부 압축된 실행 파일에는 압축 해제된 실행 파일을 실행하기 전에 파일 시스템에 쓰는 것과 같은 추가 요구사항이 있습니다.

실행 파일 압축은 바이너리 실행 파일에만 적용되는 것이 아니라 JavaScript와 같은 스크립트에도 적용할 수 있습니다.대부분의 스크립트 언어는 용장성이 높은 사람이 읽을 수 있는 코드로 동작하도록 설계되어 있기 때문에 압축은 변수와 함수식별하는 데 사용되는 긴 이름을 짧은 버전으로 바꾸거나 공백을 제거하는 것만큼 효과적이고 단순합니다.

장점과 단점

로 실행 압축기 구체적으로 실행 코드를 압축하기 위해 설계된 소프트웨어 유통 업체 다양한 이유로, 주로 그들의 소프트웨어의 보조 기억 장치 요구 사항을 줄이기 위해;, 그들은 종종 gzip, zip또는 bzip2는 경우에는 citatio 같은 표준 데이터 압축 시설보다 더 나은 압축비를 달성하는 실행을 압박합니다.n해결이 필요했다.이것에 의해, 소프트웨어 디스트리뷰터는, 선택한 디스트리뷰션 미디어(CD-ROM, DVD-ROM, 플로피 디스크 등)의 제약에 머무르거나, 고객이 인터넷을 개입시켜 배포된 소프트웨어에 액세스 하기 위해서 필요한 시간과 대역폭을 삭감할 수 있습니다.

실행 파일 압축은 리버스 엔지니어링을 저지하거나 실행 파일의 내용을 난독화하기 위해(예를 들어 바이러스 대책 스캐너로부터 멀웨어의 존재를 숨기기 위해) 독자적인 압축 및/또는 추가 암호화 방법으로 자주 사용됩니다.실행 가능한 압축을 사용하여 직접 분해, 문자열 리터럴 마스크 및 서명 수정을 방지할 수 있습니다.이것이 리버스 엔지니어링의 가능성을 없애는 것은 아니지만, 프로세스의 비용이 더 많이 들 수 있습니다.

압축된 실행 파일은 파일 시스템의 스토리지 공간을 덜 필요로 하므로 파일 시스템에서 메모리로 데이터를 전송하는 데 걸리는 시간이 줄어듭니다.한편, 실행이 개시되기 전에 데이터의 압축을 해제하는 데 시간이 걸립니다.그러나 다양한 스토리지 미디어의 속도가 평균 프로세서 속도를 따라가지 못했기 때문에 스토리지가 병목현상이 되는 경우가 많습니다.따라서 대부분의 일반적인 시스템에서 압축된 실행 파일이 더 빨리 로딩됩니다.최신 데스크톱 컴퓨터에서는 실행 파일이 비정상적으로 커지지 않는 한 이러한 현상이 거의 나타나지 않으므로 로드 속도가 실행 파일을 압축하는 주된 이유는 아닙니다.

디스크에서 실행 가능 이미지를 필요에 따라 읽는 운영 체제(가상 메모리 참조)에서는 압축된 실행 파일을 사용하면 이 프로세스의 효율성이 떨어집니다.압축 해제 스텁은 압축 해제된 데이터를 유지하기 위해 메모리 블록을 할당합니다.이 데이터는 사용 여부에 관계없이 실행 파일이 로드된 상태로 유지되며 다른 애플리케이션과 메모리 리소스를 놓고 경쟁합니다.operating system이 스왑 파일을 사용하고 있는 경우는, 단순히 미사용의 데이터 블록을 폐기해, 필요에 따라서 실행 가능한 이미지로부터 재로드하는 것이 아니라, 메모리를 해방하기 위해서, 압축 해제된 데이터를 기입할 필요가 있습니다.이것은 보통 눈에 띄지 않지만, 동시에 실행 파일이 여러 번 로드되면 문제가 됩니다.운영체제는 이미 로드된 데이터 블록을 재사용할 수 없습니다.데이터를 새로운 메모리 블록으로 압축 해제해야 하며 사용하지 않을 경우 독립적으로 스왑아웃됩니다.스토리지와 시간이 추가로 필요하기 때문에 일반적으로 동시에 여러 번 실행되는 실행 파일을 압축할지 여부를 신중하게 고려해야 합니다.

또 다른 단점은 일부 유틸리티가 정적으로 연결된 추출기 스터브만 표시되므로 런타임 라이브러리의 종속성을 더 이상 식별할 수 없다는 것입니다.

또한 오래된 바이러스스캐너 중에는 압축된 실행 파일을 모두 바이러스로 보고하는 것도 있습니다.이는 압축 해제 스텁이 압축 해제 실행 파일과 몇 가지 특성을 공유하기 때문입니다.대부분의 최신 바이러스 스캐너는 실제 실행 가능 파일을 확인하기 위해 여러 가지 실행 가능 압축 레이어를 언팩할 수 있지만 일부 일반적인 안티바이러스 및 안티멀웨어 스캐너는 압축된 실행 가능 파일의 잘못된 긍정 경보로 인해 문제가 발생했습니다.IEEE Industry Connections Security Group은 런타임 패커의 도움을 받아 난독화된 멀웨어 문제를 해결하기 위해 소프트웨어 태그건 시스템을 도입했습니다.

실행 가능한 압축은 컴퓨터가 저속 및 저용량 미디어인 플로피 디스크와 소형 하드 드라이브의 저장 용량에 한정되어 있을 때 더 많이 사용되었습니다.사용자가 매번 아카이브 파일을 수동으로 풀어야 하는 불편 없이 동일한 공간에 더 많은 소프트웨어를 저장할 수 있었습니다.소프트웨어를 사용하고 싶어했다.그러나 컴퓨터의 저장 용량이 증가했기 때문에 실행 파일 압축은 널리 사용되지 않게 되었습니다.일부 대회에 참가하려면 데모 크기를 64킬로바이트로 제한해야 하는 데모씬에서 사용됩니다.로드 시간을 늘리는 매우 정교한 압축 형식만이 이러한 경쟁에 참가할 수 있을 만큼 실행 파일을 작게 유지합니다.

실행 파일 패커 목록

CP/M 및 MSX-DOS 실행 파일

CP/M-80/MSX-DOS정상적인 실행 가능 압축기.COM 파일:

  • PMexe(1990년부터, PMARC 미노 요시히코 지음).COM+PMEXE.CPM, 시그니처 - pms-")[1]
  • POPCOM!(1992년 이후, POPCOM 미노 요시히코 작사).COM, 시그니처 "-pc1-"

DOS 실행 파일

DOS 실행 파일용 기존 실행 파일 압축기(.COM 또는 .EXE):

  • Realia Spacemaker(1982년 이후, SM의 Robert B. K. Dewar에 의해 작성).COM, 시그니처 "MEMORY$"[2][3][4][5][6][7][8][9]
  • Microsoft EXEPACK(1985년 이후, EXEPACK의 루벤 보먼에 의해서 작성).EXE, 링크EXE / E [ XEPACK ], 시그니처 "RB")[9][5][4][10]
  • LZEXE(1989년 이후, Fabrice Bellard, LZEXE에 의해 작성).EXE)[11][12]
  • PKWare PKLite(1990년 이후, PKLITE의 Phil Katz에 의해서 작성).EXE)[12][13]
  • DIET(1991년 이후, 마츠모토 테디 작사, DIET).EXE)[12]
  • TINYPROG (TINYPROG.EXE)
  • RJS 소프트웨어 RJCRUSH(1994년 이후, Roland Skinner, RJCRUSH.EXE 작성)
  • XPA(1995년 이후, XPA, JauMing Tseng에 의해 작성).EXE)
  • Ibsen Software aPACK(1997년 이후, APACK, Jörgen Ibsen 작성).EXE)
  • UPX(1998년부터 Markus F. X. J. Oberhumer와 Lasszlo Molnarr에 의해 작성됨)
  • 32LiTE(1998년 이후, Oleg Prokhorov, 32LITE에 의해 작성).EXE)
  • Knowledge Dynamics LZW 컴프레서[14]
  • WWPACK (Piotr Warezak과 Rafal Wierzbicki, WWPACK 작성).EXE)
  • 624(의 경우만.25KB 미만의 COM 파일, LZW 사용)
  • AINEXE
  • AvPack
  • ComPAck
  • HASP 엔벨로프
  • LGLZ
  • PMWLITE
  • 프로팩
  • UCEXE
  • WDOSX
  • XE
  • XPack

OS/2 실행 파일

OS/2의 기존 실행 가능 압축기:

  • NeLite
  • LxLite

새로운 실행 파일

새로운 실행 파일에 대해 알려진 실행 파일 압축기:

  • 팩윈
  • PKWare PKLite(버전 2.01 이후)
  • 윈라이트

휴대용 실행 파일

노트북 실행 파일의 기존 실행 가능 압축기:

주의: 보라색 클라이언트는 더 이상 개발 중이 아닙니다.

이름. 최신 안정판 소프트웨어 라이선스 x86-64 지원
32 Lite
에일리네이즈 1.4 (2020년 8월 17일(2020-08-17)) 독자 사양 아니요.
ANDpakk2
아르마딜로 9.62 (2013년 6월 7일(2013년 6월 7일) 독자 사양 네.
ASPack 2.40 (2018년 12월 7일(2018년 12월 7일)) 독자 사양 네.
ASPR(ASProtect) 2.78 (2018년 12월 7일(2018년 12월 7일)) 독자 사양 네.
BeRoEXEPacker
BIN 크립터
Boxed App Packer 3.3 (2015년 7월 26일 (2015-07-26)) 독자 사양 네.
CExe 1.0b (2001년 7월 20일(2001-07-20)) GPL 아니요.
크링클러 2.3 (2020년 7월 22일 (2020-07-22)) Zlib 네.
닷 번들 1.3 (2013년 4월 4일(2013-04-04))[15] 독자 사양 네.
에니그마 프로텍터 6.60 (2019년 8월 21일 (2019-08-21)[16] 독자 사양 네.
Enigma 가상 박스 9.40 (2019년 10월 10일)[16] 독자 사양 네.
exe32 팩
EXE 번들 3.11 (2011년 1월 7일(2011-01-07))[17] 독자 사양 ?
EXECRYPTOR
EXE 스텔스 4.14 (2011년 6월 29일 (2011-06-29)[17] 독자 사양 ?
eXPresor 1.8.0.1 (2010년 1월 14일(2010-01-14)) 독자 사양 ?
FSG 2.0 (2004년 5월 24일 (2004-05-24))[18] 프리웨어 아니요.
kkrunchy src 0.23a4(알 수 없음) 퍼블릭 도메인 아니요.
1.1 (불명) 프리웨어 아니요.
MPRESS 2.19 (2012년 1월 2일(2012-01-02)) 프리웨어 네.
뮤크런처
네오라이트
.netshrink(.netshrink) 2.7 (2016년 7월 2일(2016-07-02))[19] 독자 사양 네.
NsPack
옵시듐 1.6(2017년 4월 11일(2017-04-11))[20] 독자 사양 네.
PECompact
펠록 2.06 (2016년 8월 15일(2016년 08월 15일))[21] 독자 사양 아니요.
PEPack
PES핀 1.33 (2011년 5월 3일(2011년 5월 3일) 프리웨어 네.
쁘띠 2.4 (2016년 9월 22일(2016-09-22)) 프리웨어 아니요.
PKLite32
RLPack 베이직 1.21 (2008년 10월 31일 (2008-10-31) GPL 아니요.
수축기32
Smart Packer Pro X 2.0.0.1(2019년 6월 3일(2019년 6월 3일) 독자 사양 네.
테마다 / Win 라이선스 3.0(2019년 10월 24일(2019년 10월 24일)) 독자 사양 네.
백업
UPX 3.96 (2020년 1월 23일 (2020-01-23) GPL 실험적인
VMProtect 3.4 (2019년 8월 3일(2019-08-03)) 독자 사양 네.
WWPack32
XCMP/XPack 0.98 (2007년 2월 18일 (2007-02-18)) 프리웨어 아니요.
요다 크립테
YZPack

ELF 파일

ELF 파일에 대해 알려진 실행 가능한 압축기:

  • gzexe( 스크립트 stub 및 gzip을 사용하며 대부분의 Unix 유사 시스템에서 작동합니다.)
  • HASP 엔벨로프
  • UPX
  • 624(Linux/386용)[22]

CLI 어셈블리 파일

CLI 어셈블리 파일에 대해 알려진 실행 가능한 압축기:

  • .NETZ
  • NsPack
  • Mpress
  • HASP 엔벨로프
  • .netshrink(.netshrink)
  • 닷 번들
  • 엑스팩그물
  • DotProtect:[23] .net 및 모노용 시판 프로텍터/패커.온라인 검증 및 "업계 표준 암호화" 기능을 제공합니다.

Mac OS Classic 응용 프로그램 파일

Mac OS Classic 응용 프로그램 파일용 알려진 실행 가능한 압축기:

  • 응용[24] 프로그램 VISE
  • StuffIt Installer Maker

Mach-O(Apple Mac OS X) 파일

Mach-O(Apple Mac OS X) 파일용으로 알려진 실행 가능한 압축기:

  • HASP 엔벨로프
  • UPX
  • VMProtect

Commodore 64 및 VIC 20

Commodore 64 및 VIC 20의 실행 파일에 대해 알려진 실행 가능 압축기:

코모도레아미가

Commodore Amiga 시리즈의 실행 파일에 대해 알려진 실행 가능 압축기:

  • 파워패커[28]
  • 타이타닉스 크런처[28]
  • 인덕터[28]
  • TNM 크런처
  • 슈크렐러[29]
  • Pack[30] Fire

자바

Java용으로 알려진 실행 가능한 압축기:

JAR 파일:

WAR 파일:

  • HASP 엔벨로프

JavaScript 스크립트

JavaScript 스크립트에 적용할 수 있는 압축 유형에는 다음 두 가지가 있습니다.

  • 스크립트의 용장성을 줄입니다(댓글 삭제, 공백 삭제, 변수 및 함수 이름 단축).이 경우에도 스크립트의 동작은 변경되지 않습니다.
  • 원래 스크립트를 압축하고 압축 해제 코드와 압축된 데이터를 포함하는 새 스크립트를 만듭니다.이는 이진 실행 파일 압축과 유사합니다.

자동 감압식 압축기

그러면 원래 스크립트가 압축되고 압축 해제 데이터와 압축 해제 데이터가 있는 새 스크립트가 출력됩니다.

  • JsSfx
  • 패키지화

용장성으로 압축기 감소

공백 제거, 주석 제거 및 변수 및 함수 이름 단축을 수행하지만 스크립트의 동작은 변경되지 않습니다.

  • 패커
  • YUI 압축기
  • Shrinksafe
  • JSMin

「 」를 참조해 주세요.

레퍼런스

  1. ^ Gielen, Pierre; Taylor, Johnathan (1997) [1993]. Logan, Wolverine (ed.). "PMarc help manual". Archived from the original on 2019-04-22. Retrieved 2019-02-22. […] PMEXE.CPM […] is a module […] in combination with PMARC […] used to make executable compressed COM files (just like LZEXE or PKLITE […] type: PMARC <archive>.COM=PMEXE2.CPM <filename> [options] The archive-name must be .COM […] not .PMA. The output file will have the extension .CPM. It's an MSX-DOS COM file […] rename file […] to run it […]
  2. ^ "Expert Report of Robert B. K. Dewar In Response To The Report Of Kenneth D. Crews". Cambridge University Press et al v. Patton et al, Filing 124, Supplemental Initial Disclosures by Cambridge University Press, Oxford University Press, Inc., Sage Publications, Inc. - Cambridge University Press, Oxfort University Press, Inc., and Sage Publications, Inc. v. Mark P. Becker, Georgia State University President, et al, Civil Action No. 1:08-CV-1425-ODE (Court document). United States District Court For The Northern District Of Georgia, Atlanta Division. p. 18. Exhibit A. Archived from the original on 2018-05-01. Retrieved 2019-04-23. […] SPACEMAKER and TERMULATOR, commodity software for IBM PC (PC DOS file compression utility and VT-100 emulator), being marketed by Realia, Inc. R.B.K. Dewar (1982–1983), 8088 assembly language, 8,000 lines […]
  3. ^ Realia, Inc. (January 1983). "If you use DOS, you need this program". PC Magazine (advertisement). Ziff-Davis Publishing. 2 (9): 417. Archived from the original on 2019-04-22. Retrieved 2019-04-22.
  4. ^ a b Dewar, Robert Berriedale Keith (1984-03-13). "DOS 3.1 ASMB (Another Silly Microsoft Bug)". info-ibmpc@USC-ISIB.ARPA. Archived from the original on 2018-05-01. Retrieved 2019-04-23. […] The /E option of the linker should generate an EXE file which is logically equivalent to the uncompressed EXE file. The current version […] results in AX being clobbered. AX on entry to an EXE file has a definite meaning (it indicates drive validity for the parameters), thus it should be passed through to the uncompressed image. Given this one very obvious violation of the interface rules, there may be others, I have not bothered to investigate further […] I did write the Realia SpaceMaker program which does a similar sort of thing to the EXEPACK option (but needless to say does not have this particular […]
  5. ^ a b Paul, Matthias R. (2002-10-07) [2000]. "Re: masm .com (PSP) related trouble". Newsgroup: alt.lang.asm. Archived from the original on 2017-09-03. Retrieved 2017-09-03.}
  6. ^ Necasek, Michal (2018-04-30). "Realia SpaceMaker". OS/2 Museum. Archived from the original on 2019-01-27. Retrieved 2019-02-22.
  7. ^ Parsons, Jeff (2019-01-10). "An Update on Early Norton Utilities". PCjs. Archived from the original on 2019-01-29. Retrieved 2019-02-22.
  8. ^ Necasek, Michal (2019-01-12). "Yep, Norton Did It". OS/2 Museum. Archived from the original on 2019-04-22. Retrieved 2019-04-22.
  9. ^ a b Necasek, Michal (2018-03-23). "EXEPACK and the A20-Gate". OS/2 Museum. Archived from the original on 2018-11-13. Retrieved 2019-04-20.
  10. ^ Miles, Ya'akov; Nather, Ed (1986-05-17) [1986-02-05, 1986-02-09]. "Undocumented Microsoft LINK option: /E". INFO-IBMPC mailing list. Archived from the original on 2018-05-01. Retrieved 2019-04-26. [Miles:] There exists an undocumented […] switch to Microsoft LINK.EXE […], which will cause an automatic compaction during binding. This process will eliminate storage for uninitialized arrays from the .EXE file produced by the linker […] To use this feature, specify the /E option to the command line […] [Nather:] The option does not exist in MS Link versions 3.00 and 3.01 [Miles:] By comparing the sizes of the (packed) files generated from LINK ver 3.02 and the /E option with the size of the .EXE file manually packed with […] EXEPACK, I have come to the conclusion that LINK ver 3.02 option /E generates EXACTLY the same size file as manually running EXEPACK on a regular .EXE file output by LINK […]
  11. ^ Bellard, Fabrice (2003-02-09). "LZEXE home page". bellard.org. Archived from the original on 2019-03-24. Retrieved 2019-03-18.
  12. ^ a b c Salomon, David (2000) [1998]. "Chapter 3.22: EXE Compressors". Data Compression: The Complete Reference (2 ed.). Springer-Verlag. p. 212. doi:10.1007/978-3-642-86092-8. ISBN 978-3-540-78086-1. S2CID 35889155. Retrieved 2019-04-26.
  13. ^ 폴, 마티아스 R.(2002-04-11)."Re:[fd-dev]ANNOUNCE:CuteMouse 2.0알파 1". freedos-dev.그 2020-02-21에 원래에서 Archived.2020-02-21 Retrieved.[…]>아무도 압착기 같은 콤보들을 챙길 수 있다.SYS+.COM또는.SYS+.EXE.[…]에 대해 포장하는 사람들 있다.COM또는.실행과 다른 사람들에게.곧 또 보자, 하지만 전 너무 하나에 둘 다를 지원하는 포장기 보지 못 했다.[…]가능성이 program/TSR과 장치 드라이버 결합할입니다.실행 파일 program/TSR[…].으로 COM과 장치 드라이버입니다.COM프로그램[…] 후 이미[…]모든 압축 DR-DOS 장치 드라이버에도 비슷한 기술은 정상적인 PKLITE게 하기 위해 사용한 것입니다 그것은 또한 파일에 다른 자수성가한 스터브를 추가할 수도 있습니다.있는 COMdecompressor 작품이다.시스템 파일(한편 PKLITE에 대해서도 비슷한 기능을 지원하다.시스템 파일 자체 cm이다.[…](NB다. PKLITE 1.50(1995년)과 높았으나 COM+SYS 운전자들 결합되지 않다.)기능 장치 드라이버 압축 능력을 얻었다.
  14. ^ "Google Code Archive - Long-term storage for Google Code Project Hosting".
  15. ^ "Archived copy". Archived from the original on 2013-08-21. Retrieved 2013-05-06.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  16. ^ a b "Software Protection, Software Licensing, Software Virtualization".
  17. ^ a b "WebtoolMaster Software News".
  18. ^ "Archived copy". www.xtreeme.prv.pl. Archived from the original on 2004-05-25. Retrieved 2022-01-15.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  19. ^ ".netshrink executable packer & virtual DLL binder downloads".
  20. ^ "Download Obsidium Software Protection System".
  21. ^ "Download PELock — Software Protection & Licensing".
  22. ^ "624".
  23. ^ DotProtect http://site.yvansoftware.be/dotpacker1_0 2011년 1월 22일 Wayback Machine에서 아카이브 완료
  24. ^ Kiene, Steve; Mark, Dave (1999). "A Chat With Steve Kiene". MacTech. Vol. 15, no. 4. Retrieved 2017-12-10.
  25. ^ "Archived copy". www.cs.tut.fi. Archived from the original on 2014-07-30. Retrieved 2022-01-15.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  26. ^ web.comhem.se/ ~ u13114991 / http/
  27. ^ "ByteBoozer (PC)".
  28. ^ a b c "Crunchers to download".
  29. ^ "Askeksa/Shrinkler". GitHub. 2021-09-25.
  30. ^ "PackFire v1.2k by Neural".