본문 바로가기

Security

백신 배포본 만들기 (pyinstaller)

반응형
pip install pyinstaller

 

배포 파일이 있는 곳에서 

  • pyinstaller [파일명].py

실행 완료 후 dist 폴더에 존재.

 

build 배치 파일 생성

  • build.bat
pyinstaller [파일명].py

위 명령어를 저장

 

anti_virus.exe 실행 시 exit 관련 오류 발생한다면 sys.exit(0)으로 모듈 참조를 정확히 쓰면 됨.

모듈을 분리해서 import를 한 경우, exe 파일을 만들면서 모두 불러와서 한 파일에 내장함으로 같은 위치에 없어도 정상 동작함.

 

exe 에 내장된 모듈 외에 외부 모듈을 사용하는 방법

import imp 필요

try:
        m = 'scan_mod' # 로딩할 모듈 명
        f, filename, desc = imp.find_module(m, ['']) # 현재 폴더에서 모듈 찾음
        module = imp.load_module(m, f, filename, desc)
        cmd = 'ret, vname = module.ScanVirus(vdb, vsize, sdb, fname)' # 진단 함수 호출
        exec(cmd) # 명령어 실행
except ImportError: 
        fname = sys.argv[1]
        ret, vname = scan_mod.ScanVirus(vdb, vsize, sdb, fname)

try에서 같은 폴더 내 외부 모듈 로딩 시도하고, 실패 시 내장 모듈 사용

  • build 하여 exe 파일 만든 후에도 모듈 수정 가능.
  • 외부 모듈 로딩 안하면 내장 모듈 수정 시 새로 빌드 계속 해야됨.
  • .py 파일 컴파일 하여 .pyc 파일로 사용하여도 정상 로드됨
  • .py는 소스차원이라 분석하여 수정 위험성 있으므로 컴파일 후 byte code로 배포

python -m compileall scan_mod.py

파일이 있는 경로 하위 __pyache__에 생성되는데, 동적 로드에서 pyc를 쓰려면 지정한 모듈명과 이름이 같아야 한다.

  • scan_mod.pyc (O)
  • scan_mod.python39.pyc (X)
반응형

'Security' 카테고리의 다른 글

Machine Learning & Security  (0) 2021.12.30
Python plugin engine architecture (키콤)  (0) 2021.12.27
kali linux tools  (0) 2021.12.13
kali msfvenom  (0) 2021.12.09
kali msfconsole  (0) 2021.12.09