[python 일반] 파이썬 디컴파일 방지 난독화 초간단 방법

파이썬으로 개발한 프로그램을 배포할 때 pyinstaller 모듈을 사용하여 exe 형태의 실행파일로 배포합니다. 하지만 조금만 구글링을 해보면 실행파일 디컴파일 프로그램을 통해 소스코드를 복원해 낼 수 있음을 알 수 있습니다. (초간단 디컴파일 방법은 이 글 맨 아래의 링크된 포스팅을 참고하세요)

 

파이썬은 인터프리터 방식으로 실행되므로 평상시에는 소스코드 상태로 존재하며 pyinstaller는 이런 소스코드를 묶어 바이너리 파일로 변환하는 기능만 할 뿐 소스코드를 난독화(Obfuscation)하는 기능이 없기 때문에 디컴파일을 통한 소스코드 복원이 상대적으로 쉬운편입니다. 의도적인 난독화 적용시 원본코드보다 가독성이 현저히 떨어져 사람이 해석하기 어렵기 때문에 중요한 알고리즘의 유출 방지, 지적재산권 보호등에 도움을 줍니다.

 

구글링을 통해 몇가지 파이썬용 난독화 도구들를 찾을 수 있었고 기능을 검토해 본 결과를 남기도록 하겠습니다.

1. pyarmor

가장 기능적으로 완성도가 높은 프로그램으로 개발자가 평상시에는 난독화에 대해서 고민할 필요가 없다가 배포시에만 pyarmor를 이용해서 난독화 적용 가능하며 내부적으로 pyinstaller 까지 호출하므로 한번에 실행파일로 패킹작업까지 가능하다는 장점을 가지고 있습니다. 그래서 테스트로 프로그램에 적용을 하던 중에 다음의 문제점을 발견하였습니다.

 

난독화 용량 제한

 

pyarmor는 소스파일이 32768바이트를 넘어가면 무료버전으로는 난독화가 불가능하였습니다. 해당 파일만 무시하고 난독화를 진행해도 될텐데 그대로 중지되어 더이상 진행이 되질 않았습니다. 어쩔수 없이 pyarmor는 다음에 검토하기로 보류하고 검토대상에서 제외하였습니다.

 

2. pyminifier

 

파이썬과 호환성 문제

 

pyminifier은 설치단계에서 부터 진행이 불가능하였습니다. 현재 파이썬 3.10 버전을 사용하고 있는데 정확한 원인은 알 수없지만 호환이 잘 되지 않는것 같았습니다. 구글링을 해봐도 해결방법을 찾지 못해 더이상 진행이 불가능하였습니다.

 

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

3. Oxyry Python Obfuscator : https://pyob.oxyry.com/

난독화 모습

 

파이썬 코드를 웹 사이트에서 바로 난독화하고 그 결과를 복사해 올 수 있는 가장 심플한 형태의 방법입니다. 단 몇 초면 전환이 가능하여 편리하게 사용할 수 있습니다. 다만 우리가 하는 난독화의 목적이 소스코드 보호인데, 소스코드를 웹 서버에서 전송하여 변환 값을 돌려받는 방식은 모순적일 수 있습니다. 궁극적으로는 로컬 버전을 사용하게는 맞으나, 로컬 버전은 아쉽게 유료로 서비스되고 있습니다.

 

난독화의 중요성에 비해 난독화 관련 프로그램수가 적고 기능도 제한되어 있어 만족할만한 방법을 찾지 못하였습니다. 우선은 '3. Oxyry Python Obfuscator' 의 방법을 이용해서 프로젝트에서 핵심 비지니스 로직만 부분적으로 난독화 하는 방법으로 진행을 하고 차후에 다시 pyarmor의 도입여부를 검토해 보도록 하겠습니다.

 

마치며

 

난독화는 파이썬 코드의 안전성과 보안성을 높이는 데 도움이 되지만, 완전한 보안을 제공하지는 않습니다. 고도의 기술을 가진자가 또는 악의적인 해커가 적절한 도구와 기술을 사용한다면 난독화된 코드 역시 해독할 수 있습니다. 따라서 중요한 정보를 포함한 코드의 경우, 추가적인 보안 메커니즘을 고려해야 합니다.

 

[출처] https://wise-office-worker.tistory.com/28

 

 

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
57 [python 인공지능] Deploy ML models with FastAPI, Docker, and Heroku | Tutorial 졸리운_곰 2025.07.08 467
56 [python 인공지능] [VSCode] VSCode에서 ipynb 파일을 HTML(PDF 등..)로 졸리운_곰 2025.05.27 289
55 [Python 인공지능] [파이썬을 이용한 한글 NLP] 03. 간단한 키워드 추출기 졸리운_곰 2025.01.29 459
54 [Python 인공지능] [ 한글 키워드 시각화 ] 파이썬 python 텍스트 마이닝 한글 ( 워드 클라우드 WordCloud, squrify 트리맵으로 빅데이터 마스터) file 졸리운_곰 2025.01.29 398
53 [Python 인공지능] 기계 학습의 A to Z : IPython notebook과 scikit-learn을 활용한 기계 학습 file 졸리운_곰 2024.08.10 523
52 [python] 인공지능 python : 한글 문서 자동 요약 - lexrank 졸리운_곰 2023.07.06 404
51 [python] 인공지능 katiehouse / django-scikit-learn-tutorial file 졸리운_곰 2023.06.03 664
50 [python] [Anaconda]가상환경 설치,삭제 file 졸리운_곰 2022.12.03 405
49 [python][머신러닝] Scikit-learn Tutorial: Machine Learning in Python file 졸리운_곰 2022.11.29 497
48 [python] 파이썬(sklearn) 사이킷런(sklearn) 기초 졸리운_곰 2022.08.20 321
47 [python] scikit-learn이란 file 졸리운_곰 2022.08.20 455
46 [anaconde3][python] Create environment for tensorflow 1.4 in Anaconda 3 졸리운_곰 2022.07.02 563
45 [python][인공지능] [TensorFlow] Anaconda 가상환경 이용하여 TensorFlow GPU 설치 졸리운_곰 2022.01.20 438
44 [Python 인공지능] TextRank 를 이용한 키워드 추출과 핵심 문장 추출 (구현과 실험) file 졸리운_곰 2021.11.22 597
43 [python][인공지능] FLASK를 이용하여 PYTHON에서 PYTORCH를 REST API로 배포하기 졸리운_곰 2021.03.20 364
42 [python 파이썬] Creating REST API for TensorFlow models file 졸리운_곰 2021.02.01 488
41 [python 파이썬 인공지능] Keras 모델을 REST API로 배포해보기 file 졸리운_곰 2021.02.01 411
40 [파이썬 머신러닝] Scikit-learn 기초 졸리운_곰 2020.01.31 579
39 파이썬으로 간단한 뉴럴 네트워크 만들기 How to Create a Simple Neural Network in Python file 졸리운_곰 2020.01.29 22636
38 Keras를 활용한 주식 가격 예측 file 졸리운_곰 2019.02.25 983
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED