본문 바로가기
파이썬코드공유

파이썬 디컴파일 방지 난독화 초간단 방법

by 하이어시스템 2023. 7. 17.
반응형

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

 

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

 

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

 

하이어시스템 소개

 

하이어시스템 소개 feat.김프로

소개 안녕하세요, 저는 하이어시스템의 김프로입니다. 여러분들이 어려움을 겪고 계신 일상 업무를 저의 안정적이고 빠른 소프트웨어로 자동화하는 것, 그것이 저의 목표입니다. '하이어시스템

wise-office-worker.tistory.com

 

1. pyarmor

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

난독화 용량 제한

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

 

2. pyminifier

파이썬과 호환성 문제

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

 

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

 

Oxyry Python Obfuscator - The most reliable python obfuscator in the world

Features Rename symbol names, includes variables, functions, classes, arguments, class private methods. The name replacer avoids a 1:1 mapping of cleartext names to obfuscated names, the same name may be converted to several different names within differen

pyob.oxyry.com

난독화 모습

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

 

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

 

마치며

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

 

https://wise-office-worker.tistory.com/29

 

[강추] 파이썬 EXE 실행파일 디컴파일 초간단 방법(Magic Number 불필요)

이전 포스팅에서는 파이썬 배포 프로그램의 난독화의 필요성에 대해서 소개해 드렸습니다. 이번에는 실제로 난독화된 실행파일을 디컴파일 하여 원래 소스를 복원해 내고 난독화된 상태로 패

wise-office-worker.tistory.com

반응형