[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

 

 

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
87 [python 일반] 파이썬에서 도커 사용하기: 기초부터 배포까지 졸리운_곰 2024.12.01 410
» [python 일반] 파이썬 디컴파일 방지 난독화 초간단 방법 file 졸리운_곰 2024.08.13 539
85 [python 일반] [Python] python 예제 - 프로그램 실행 위치 확인 방법 3종 - os.getcwd,... 졸리운_곰 2024.07.28 451
84 [python 일반] [Python] How to capture output of Python's interpreter and show in a Text widget? 졸리운_곰 2024.07.26 230
83 [python 일반] [Python] How to Fix Python’s “List Index Out of Range” Error in For Loops 졸리운_곰 2024.07.26 284
82 [python 일반] [Python] Python 리스트에 특정 값이 있는지 체크하기 졸리운_곰 2024.07.26 418
81 [python 일반] [Python] 원하는 시간마다 파이썬 자동 실행 file 졸리운_곰 2024.07.25 337
80 [python 일반] [Python] pyinstaller] PyInstaller -i, --add-data로 아이콘(icon)을 포함하자 file 졸리운_곰 2024.07.19 428
79 [python 일반] [Python] pyinstaller : 파이썬 컴파일 시 코드 암호화 & 복호화 file 졸리운_곰 2024.06.10 374
78 [python 일반] ** Date형식을 String형식으로 변환 ** 졸리운_곰 2024.06.08 297
77 [python 일반] [Python] strftime과 strptime file 졸리운_곰 2024.06.07 377
76 [python 일반] How to Run a Periodic Background Task in Python 졸리운_곰 2024.06.07 324
75 [python 일반] *win32ctypes.pywin32.pywintypes.error when using pyinstaller in VS Code - Possible Virus/Trojan? 졸리운_곰 2024.06.07 453
74 [python 일반] 【Python】The 'pathlib' package is an obsolete backport of a standard library ・・・ 졸리운_곰 2024.05.30 318
73 [Python 일반] 파이썬 exe 파일 만들기 졸리운_곰 2024.05.30 307
72 [Python] 클립보드 무엇인가? Pyperclip을 통한 자동화 file 졸리운_곰 2024.05.06 364
71 [Python] PyQt와 PySide에 대한 잡설 file 졸리운_곰 2024.04.25 253
70 [python 일반] How to Update All Python Packages : 설치된 파이썬 패키지 모두 업데이트 하기 file 졸리운_곰 2024.03.16 604
69 [python, C++] Interfacing C++ and Python with the Python API : C++ 및 Python과 Python API의 인터페이스 file 졸리운_곰 2023.08.18 302
68 [python 일반] 파이참 에러 : Fatal Python error: init_stdio_encoding: failed to get the Python codec name of the stdio encoding file 졸리운_곰 2023.07.06 354
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED