정지용
기술스택 목록
도구

PyArmor

프로젝트 1에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.

이 기술은 무엇인가요?

Python 바이트코드를 암호화하고 난독화하여 배포용 소스 코드를 보호하는 도구

PyArmor는 Python 스크립트를 역공학으로부터 보호하기 위해 만들어진 난독화 도구입니다. .py 파일을 암호화된 바이트코드로 변환하고, 실행 시점에만 메모리에서 복호화하여 소스 코드가 노출되지 않도록 합니다. 상용 소프트웨어나 알고리즘을 포함한 Python 애플리케이션을 배포할 때, 지적 재산권을 보호하고자 하는 개발자들이 주로 사용합니다.

이럴 때 사용합니다

  • 상용 Python 소프트웨어를 고객에게 배포할 때 소스 코드 유출을 막고 싶은 경우
  • 핵심 알고리즘이나 비즈니스 로직이 포함된 스크립트를 보호해야 하는 경우
  • 특정 머신이나 기간에만 실행되도록 라이선스를 제한하고 싶은 경우
  • 역공학 시도를 어렵게 만들어 지적 재산권을 보호해야 하는 경우

핵심 개념

Obfuscation
코드를 읽기 어렵게 변환하는 기법. PyArmor는 단순 난독화를 넘어 바이트코드 암호화와 런타임 보호를 결합합니다.
Runtime Key
암호화된 스크립트를 실행하기 위해 필요한 복호화 키. 특정 머신이나 기간에 바인딩하여 무단 배포를 방지할 수 있습니다.
Bootstrap Code
난독화된 스크립트를 실행하기 위해 PyArmor가 생성하는 초기화 코드. 암호화된 모듈을 로드하고 복호화 환경을 설정합니다.
License File
난독화된 프로그램의 사용 권한을 제어하는 파일. 만료 날짜, 하드웨어 정보 등을 포함하여 배포 제어가 가능합니다.

기본 스크립트 난독화

app.py를 암호화하여 dist 폴더에 배포 가능한 난독화 버전을 생성합니다. 원본 소스 코드는 복원할 수 없으며, 실행 시에만 메모리에서 복호화됩니다.

Shell
# PyArmor 설치
pip install pyarmor

# 단일 스크립트 난독화
pyarmor obfuscate app.py

# 결과물은 dist/ 폴더에 생성됨
# dist/app.py (난독화된 버전)
# dist/pytransform/ (런타임 라이브러리)

# 난독화된 스크립트 실행
python dist/app.py

처음 쓸 때 흔한 함정

  • 난독화된 코드는 디버깅이 어렵고 스택 트레이스가 불명확해질 수 있습니다
  • 일부 동적 코드 분석 도구나 프로파일러와 호환되지 않을 수 있습니다
  • 완벽한 보호는 아니며, 결정적인 공격자는 메모리 덤프 등으로 우회할 가능성이 있습니다

위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.

프로젝트별 활용 방식

위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.

함께 사용한 기술

위 프로젝트들에서 같이 쓰인 다른 기술입니다.