기 타 [왕초보님께] 패커(실행압축) 와 프로텍터
2017.05.20 02:08
밑에 왕초보님의 글을 정독(?)하다보니 갑자기 옛일이 떠올라 몇자 적어봅니다.
도스,윈도우98,xp시대에 ,Reverse Engineering에 빠져, 전우(?)들과 함께 크랙게시판과 한글화 작업,,, [oPEN rEVERSE fORUMS]을 운영하던시절,,,
매일 밤을 세워가며,지긋지긋하게 코드를 파헤치던 녀석들이 바로 패커와 프로텍터 프로그램이었죠,,,^^
그때 그시절에 비하면 지금은 거의 Reverse Engineering에 관련된 정보 찾기가 어려워 아쉬움(?)도 많고,,,,,,
.....................
과거 이야기는 중략하겠습니다...ㄷㄷㄷ( 돌이켜보면 젊음이 참, 부러워집니다,)
패킹과 프로텍팅에 대해 글을 쓰다보니 많은 시간이 소요될 것 같아,세상에 널려 있는 남의글을 잠시 빌려오겠습니다.
패커와 프로텍터의 차이점
패커
패커란 실행 파일 압축기를 말 한다. 정확한 명칭은 Run_Time 패커라고 한다. ‘실행 압축’ 이란 실행 파일에 실행 코드를 원본 형태로 두지 않고 압축을 한 것 이다. 그리고 압축해제 코드를 실행 파일에 같이 넣어 놓은 것 이다. 그래서 프로그램이 실행 될 때 먼저 압축해제 코드를 만나 원본 실행 코드 압축이 풀린 뒤 실행이 된다. 이러한 실행 압축을 만드는 것을 패킹이라고 한다
패커의 사용 목적은 다음과 같다.
- 실행 파일을 줄이고자 하는 목적
- PE 파일 내부의 코드와 소스를 감추기 위한 목적
프로텍터
프로텍터란 PE 파일(실행파일)을 리버싱으로부터 보호 하기 위한 프로그램 이다. 패커 처럼 실행 압축 할 뿐만 아니라 리버싱을 막기 위한 기법들이 추가 된다.
프로텍터의 사용 목적은 다음과 같다.
- 크래킹 방지
- 코드 및 리소스 방지
두 가지의 큰 차이점은 패커는 말 그대로 압축만을 할 뿐이고 프로텍터는 프로그램을 보호하기 위한 기법이 들어 간 것이다. 디버거를 종료 시킨다던지 불가능하게 한다 던지의 기법 등이 있다.
,,,,,,중략 참조: https://lapislazull.tistory.com/81
패킹(실행 파일 압축)에 관한글 --위키백과
소프트웨어 개발자들이 실행 파일 압축을 사용하는 까닭은 많은데, 주로 소프트웨어의 기억 장치의 용량을 줄이는 것이 목적이다.
실행 압축 프로그램의 목적은 실행 코드를 압축하는 것이며 gzip, zip, Bzip2와 같은 표준 데이터 압축 기능보다 더 나은 압축률을 보이고 있다.
CD-ROM, DVD-ROM, 플로피 디스크와 같은 용량이 제한된 매체에 쓰이며, 인터넷의 경우 다운로드 시간을 줄이기 위해서 사용되기도 한다.
PE 포맷으로 되어 있는 실행 파일을 압축할 때의 한 가지 장점으로는 보안을 들 수 있다.
어떠한 프로그램 안의 데이터를 분석하는 프로그램을 사용하여 프로그래머가 짠 내용을 분석하지 못하게 막을 수 있다.
한글 패치를 만들 때에도 이러한 프로그램이 이용되기도 한다.
압축된 실행 파일은 파일 시스템의 공간을 덜 차지하기 때문에 파일 시스템으로부터 데이터가 메모리에 전송되는 시간이 덜 걸린다.
한편, 실행 직후 데이터의 압축을 푸는 시간이 좀 걸릴 수 있다.
다만, 다양한 저장 매체의 속도는 평균적인 프로세서 속도를 따라잡지 못했기 때문에 저장 장치는 자주 병목 현상을 겪는다.
그러므로 압축된 실행 파일은 대부분의 시스템에서 더 빨리 실행될 것이다.
일부 대한민국 웹에서는 압축된 실행 파일을 실행할 때 비록 시스템 메모리를 더 잡아먹지만 속도가 빨라진 것을 바로 느낄 수 있다는 의견이 있던 반면, 그렇지 못하는 경우도 많다는 의견도 있었다. 현대의 데스크톱 컴퓨터에서 실행 파일이 비정상적으로 크지 않다면 눈치채기 쉽지 않기 때문에 실행 속도를 빠르게 하는 것이 실행 파일을 압축하는 주된 이유라고 볼 수는 없다.
실행 파일마다 압축 프로그램의 특성을 타는 경우가 있다. 이를테면, UPX로 압축한 실행 파일은 정상 동작하는 반면, ASPack로 압축한 실행 파일은 정상 동작하지 않는 경우가 있고 그 반대의 경우도 있다. 또 이러한 실행 파일 압축 프로그램은 라이브러리 파일도 압축할 수 있으며 이러한 라이브러리 파일도 특성을 탈 수 있다. 따라서 실행 압축을 하기 앞서 백업을 하는 것이 권장되며, 압축을 한 뒤에 적절한 테스트가 요구된다.
디스크의 실행 파일 이미지를 읽는 운영 체제에서(가상 메모리를 참조하라), 압축된 실행 파일은 이러한 작업의 효율성을 떨어트릴 수 있다. 압축 해제 작업은 메모리 블록을 할당하여 압축되지 않은 데이터를 유지한다. 사용 여부에 관계 없이, 함께 실행되고 있는 다른 응용 프로그램의 메모리 리소스를 차지하려 하면서, 실행 파일이 로드되는 한 계속 할당된다. 운영 체제가 스왑 파일을 사용한다면(보통 메모리 부족을 겪지 않기 위해 사용한다), 압축되지 않은 데이터는 단순히 사용하지 않는 데이터 블록을 버린 뒤 실행 파일 이미지로부터 다시 로드하지 않고 메모리의 남은 공간을 넓힌다. 보통 눈에 잘 띄지 않지만, 실행 파일이 동시에 한 번 이상 실행될 때 문제가 될 수 있다.(운영 체제는 이미 로드된 데이터 블록을 다시 사용할 수 없고, 데이터는 새로운 메모리 블록으로 압축이 풀어져야 하며, 사용하지 않는 경우 독립적으로 스웨핑 처리가 되어야 한다.)
또다른 단점으로는 정적 라이브러리 압축 해제 프로그램만 보이는 것처럼, 일부 유틸리티는 런타임 라이브러리 독립을 더 이상 확인하지 않는다는 것이다.
또한, 바이러스 검사 프로그램은 압축된 모든 실행 파일을 바이러스로 판단하는 경우가 있는데 압축 해제 부분이 바이러스에 대한 일부 문자열을 공유하기 때문이다. 요즘 나오는 대부분의 바이러스 검사 프로그램은 몇 가지 실행 압축 계층을 분석하여 내부에 있는 실제의 실행 파일을 검사할 수 있다.
실행 압축은 컴퓨터가 플로피 디스크, 용량이 적은 하드 드라이브가 쓰였을 시절에 많이 쓰였다. 컴퓨터가 같은 크기의 공간에 더 많은 소프트웨어를 담을 수 있게 해 주었고 압축 파일의 해제 과정이 필요 없다는 것이 장점이었다. 그러나 실행 압축은 컴퓨터의 기억 공간이 커짐에 따라 잘 쓰이지 않게 되었다.--( 이것은 진실이 아님..^^,,프로그램 개발자들이 모든 수단을 동원해서 실행파일에 패킹과 프로텍팅을 걸어놓아 크래커(?)들을 어렵게하는 진실 아시죠? 또한 언팩을 해야 한글화 작업도 가능하기 때문에 한글화를 위해 고생(?)하시는 분들껜 필수작업이겠죠)
잘 아시다시피,,,크래커들이 배포하는 키젠,패치 파일들은, 거의 패킹과 프로텍팅이 걸려 있어 바이러스 프로그램에 걸려듭니다,,,ㄷㄷㄷ
,,,,,,,,중략,,,,복사해오다 보니 글들이 산만한 점 양해바랍니다.
실행 압축 프로그램의 종류
엄청 많습니다..
- UPX - 자유 소프트웨어 : 이 프로그램은 도스, 윈도용 실행 파일을 압축할 수 있다.
- .netshrink
- ASPack
- CExe
- exe32pack
- eXPressor
- FSG
- MEW – 개발 중단
- NeoLite
- NsPack – .NET
- PECompact
- PEPack
- PELock
- PKLite32
- PEtite
- RLPack
- Shrinker32
- Upack – 프리웨어
- WWPack
- PESpin
- BeRoEXEPacker
- .NETZ – .NET
도스용 실행 파일만 압축할 수 있는 프로그램:
- apack
- diet
- lzexe – 마이크로컴퓨터에서 공식적으로 널리 쓰인 첫 실행 파일 압축 프로그램.
- pklite
- UPX
- wwpack
ELF 파일을 압축할 수 있는 프로그램:
.......................
32비트가 대세이던 시절,,,필수 방문코스
https://www.exetools.com/compressors.htm
https://www.exetools.com/protectors.htm
https://forum.exetools.com/
https://tools.pediy.com/windows/packers.htm : 중궈넘들 싸이트 ,,,중국게시판들이 가장 활발하게 운영(?)해 왔는데 이젠 거의 사멸의 과정을...
https://www.woodmann.com/fravia/projunpa.htm
https://www.woodmann.com/forum/activity.php?s=156903bb7f5553d400a81016a4bab9c3
https://www.woodmann.com/crackz/index.html
기타등등 ...거의 존재가 희미해져 갑니다..
--------------------------------------------------------------------------
패킹과 프로텍팅 분석프로그램
https://exeinfo.atwebpages.com/
Exeinfo PE 는 A.S.L 이 만든 소프트웨어이며, PEiD 와 같은 분석 툴이며, 실행 후 드래그&드롭 으로 간편하게 해당 프로그램이 어느 언어로 컴파일 되었는지, 또 패킹, 크립팅, 프로텍팅 여부와 어느 툴에 의해 패킹되었는지 볼 수 있다.
PEiD 도 유명한 편이지만 ExeInfo PE 가 PEiD 보다 볼 수 있는 정보가 많다.업그레이드가 최근까지 진행,,,
기타 많은 분석툴이 있지만 오늘은 여기까지...
---------------------------------------------------------------------------
https://x64dbg.com/#start : 64비트용 디버거
============================================================================
변질(?)우려가 있는 파일작업할때 제가 가장 많이 사용하는 패커는 UPX입니다,,( 왜요? 공짜라서,,^^,,)
UPX Shell 3.4.2 - 실행 파일 압축 프로그램 UPX를 간편하게 사용하자
https://circlash.tistory.com/160 포터블버젼 포함
-----------------------------------------------------------------------------
짧은 시간에 글을 올리려다 보니, 여기저기 난장으로 빌려오는 바람에 부실한점 양해바랍니다.
조금이라도 도움이 되시길 바랄뿐,,,
첨부파일: 악성코드 분석을위한“실행압축”해제기법 pdf파일
마지막에 oPEN rEVERSE fORUMS 이 소개되어 미소를 지어봅니다.
댓글 [7]
-
BlackPhoenix 2017.05.20 02:48
-
ehdwk 2017.05.20 05:16
잘 감상했습니다. -
cungice 2017.05.20 07:59
sTarTark님 고생 많으셨습니다. 좋은 정보와 자료들 감사합니다.
-
왕초보 2017.05.20 08:50
글을 읽고 손이 자동으로 추천부터 클릭을 하였습니다..
패팅쪽에 대해서 아는것이 거의 없다보니..인터넷어서 이곳저고 기웃거리기만 하였습니다
다행히..몇몇분들이 조언을 해주신 덕분에..몇가지 패킹 프로그램으로 실행은 해 볼수 있었습니다
체계적으로 알지 못하다보니..용어 자체도 정확히 알지 못하였던 부분들도 있네요..
이렇게 많은 정보를 쉽게 알려주셔서 진심으로 감사드립니다...
덕분에...복잡하던 것들이 정리가 된것 같습니다..
알려주신 링크들에 들어가 보고..놀랐습니다..아니 이렇게 다 모여 있는데..이런곳 있다는 것도 몰랐습니다
역시..고수님들께서 다니시는 길이 따로 있나 봅니다...
오랫동안 고생하시면서 알게되신 지식과 정보를 이렇게 알려주셔서 감사합니다..
글을 읽으면서...글을 쓰실때의 마음이 전해지는것 같았습니다...
따뜻한 마음이 느껴지는 글에 머리숙여 감사드립니다
항상 좋은일만 있으시길 바랍니다...복 많이 받으십시요
-
번개 2017.05.20 09:20
DLL, OCX, BPL 사용한 EXE의 경우 동적 로딩으로 실행시 일부 기능 호환성 문제가 발생할수 있습니다.
실행된다고 배포했다가 문제생겨서 낭패를 겪은적이 있으니 참고바랍니다
-
왕초보 2017.05.24 09:46
소중한 경험을 알려주셔서 감사합니다...
즐거운 하루 되세요...
-
선우 2017.05.24 08:35
sTarTrak님 배려 깊으신 포스팅을 보면서 내용은 입문자가 이해 하기에 힘들었지만 귀한 시간 내시어서 해주신 포스팅에 인사말씀 올리고 갑니다 자주오셔서 저 같은 입문자 한데도 필요한 가르침 많이많이 주시길 간청 드리옵니다 즐거운 하루 보람 한가득 하시길 바랍니다 감사합니다^^*
와우! 정말 윈포에는 너무나 많은 고수님들이 존재 하시니
뭐라 말하기가 힘들지만, 많이 배워 갑니다.
감사 합니다.