VM 난독화
VM 난독화는 JavaScript 함수를 출력물에 내장된 가상 머신에서 실행되는 맞춤형 바이트코드로 변환합니다. 따라서 보호된 로직은 더 이상 읽을 수 있는 JavaScript 형태로 배포되지 않습니다.
VM 보호는 대상이 될 수 있는 함수에 적용됩니다. root 모드에서는 vmWrapTopLevelInitializers가 대상이 될 수 있는 초기화 식도 감싸서 가상화할 수 있으며, 현재 VM 프리셋은 이 옵션을 켭니다. VMNoFunctionsToVirtualize 같은 적용 범위 경고를 검토하고, comment 모드를 사용해 민감한 함수를 명시적으로 선택하세요.
난독화는 리버스 엔지니어링 비용을 높이지만 불가능하게 만들지는 못합니다. 따라서 비밀 정보와 최종적인 보안 판단은 서버에 두세요. 난독화가 보장할 수 있는 것과 없는 것은 모범 사례를 참고하세요.
도움이 필요하신가요? VM 난독화가 제대로 동작하지 않으면 VM 런타임 오류 진단하기 문서에서 문제 범위를 좁히고 버그 리포트를 보내는 방법을 확인하세요.
이 섹션의 내용
실행 환경 호환성
빌드를 실행되는 곳에 맞추세요. Target 옵션, 런타임 방어 기능, 빌드 파이프라인이 유지해야 하는 것을 다룹니다.
VM이 코드를 변환하는 방식
VM이 무엇을 그대로 노출하고 무엇을 숨기는지, 그리고 함수 이름을 보호하는 방법입니다.
특정 함수 지정하기
최적의 성능을 위해 민감한 함수만 선택적으로 VM 난독화합니다.
Register-Based VM
VM을 레지스터 기반 실행 모델로 전환합니다. 번들이 약간 커지는 대신 런타임이 빨라집니다.
Async Executor
바이트코드 복호화 키를 번들에 포함하지 않고 런타임에 가져올 수 있도록 VM을 비동기로 실행합니다.
엄격 모드 호환성
VM이 올바른 바이트코드를 컴파일하도록 엄격 모드를 선언하세요.
직접 eval 동작 방식
직접 eval() 호출이 VM 난독화를 비활성화하는 이유와 이 문제를 피하는 방법입니다.
VM Self Defending
VM 런타임을 위한 변조 탐지, 코드 무결성 검사, 후킹 방지입니다.
VM Debug Protection
VM으로 보호된 코드를 위한 디버깅 방지 조치입니다.
VM Domain Lock
난독화된 VM 코드를 특정 도메인과 하위 도메인에서만 실행되도록 제한합니다.
Browser Environment
프로덕션 빌드가 어떻게 제공되는지 선언하여 보호된 코드가 무결성을 그에 결속하도록 합니다.
