반응형
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 |