뉴비에욤

0x4 Python Tutorials - Python to EXE 본문

primalsecurity.net/Python Tutorials

0x4 Python Tutorials - Python to EXE

초보에욤 2015. 9. 8. 01:19

"PyInstaller"를 이용한 파이썬 실행 파일 생성

 

이번 포스팅에서는 파이썬 스크립트를 exe 파일로 컴파일 하는 것을 보여줄 것이다. 이는 당신이 작성한 파이썬 코드가 파이썬이 설치되지 않은 다양한 윈도우 환경에서 실행될 수 있게 도와준다. 우선 파이썬 2.x 버전을 포함하여 몇 가지 의존성 패키지를 설치해야 한다. 이번 포스팅 환경에서는 cygwin 혹은 PyWin 패키지를 이용할 것이다.

 

리눅스 환경 : sudo apt-get install python2.7 build-essential python-dev zlib1g-dev upx

윈도우 환경 : http://www.activesate.com/activepython (풀패키지 인스톨 파일)

 

의존성 패키지 설치가 완료되Pywin32, Setuptools, PyInstaller 패키지를 추가로 설치해야 한다.

 

 

 

패키지 설치 이후

 

이제 다음의 명령어를 통해 파이썬 스크립트를 실행파일로 만들 수 있다.

-  "python pyinstaller.py -F <scriptName>"

 

위 명령이 실행되면 우선 파이썬 코드에서 사용되는 모듈(임포트된)과 의존성 패키지를 추출하고 "<scriptName>.txt, <scriptName>spec, <scriptName>.exe" 파일을 포함하는 새로운 폴더를 생성한다. 이제 ".exe" 파일을 사용할 수 있다. 참고로 ".txt, .spec" 파일은 삭제해도 무방하다.

 

 

 

실행 파일 생성 이후

 

파이썬 스크립트가 이제 exe 파일로 변환되었기 때문에 파이썬 인터프리터가 없는 윈도우에서도 동작할 수 있다. 따라서 다양한 윈도우 환경에서 의존성 걱정 없이 파이썬 코드를 실행할 수 있게 된다.

 

 

 

예제 스크립트

 

위와 같이 파일을 작성한다. 아래 사진의 명령어를 통해 exe 파일을 생성할 수 있다.

 

 

위 사진의 명령에서 사용되는 "-F" 옵션은 exe 파일이 생성될 때 하나의 파일로 생성하라는 뜻이다. 파이썬 코드에 따라서 실행 파일이 여러개로 나뉘어지는 등의 경우가 발생하는데 이를 미리 예방하는 옵션이다.

 

 

 

명령어가 수행되면 위 사진처럼 "dist" 폴더가 생성되고 그 안에 "test.exe" 파일이 존재하게 된다. 실행하면 파이썬 코드 내에 포함되던 "Hello World!!!" 문자열이 출력된다.

 

 

위 사진에서 사용되는 "-w" 옵션은 파이썬 코드가 GUI를 생성하는 코드이거나, 커맨드창을 숨기고 싶을 떄 사용하는 옵션이다.

 

 

역시 "dist" 폴더에 "test.exe" 파일이 생성되지만 이전 파일과 아이콘이 다르게 생긴것을 볼 수 있다.

 

 

생성된 파일을 실행하면 아무것도 출력되지 않는다. 이를 이용해서 악성코드 등을 백그라운드에서 실행되게 할 수 있다.

 

 

 

이제 당신은 이전 포스팅에서 다루었던 모든 코드를 위에서 보았던 프로세스를 이용하여 exe 파일을 생성할 수 있다.

 

파이썬 스크립트를 exe 파일로 만드는 것은 파이썬이 설치되지 않은 윈도우 환경에서 권한 상승 코드를 실행할 때 매우 유용하게 사용될 수 있다. 튜토리얼 0x2에서 작성했던 리버스 쉘처럼 좀 더 고급스러운 파이썬 코드를 exe 파일로 만드는 것을 연습하길 바란다.

 

 

Comments