문서
/
VM 난독화
/

VM Debug Protection

VM Debug Protection

Pro

시청

Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock

YouTube에서 보기

vmDebugProtection 옵션은 VM 런타임에 디버깅 방지 조치를 추가하여, 보호된 코드를 리버스 엔지니어링하기 훨씬 어렵게 만듭니다. 각 탐지가 어떻게 대응할지는 vmDefenseReaction의 debugger, automation, sandbox 카테고리로 설정합니다.

browserEnvironment.hosting을 'remote'로 설정하면(v7.14.1+), Debug Protection은 빌드가 원격 호스트에서 제공된다는 조건에도 결속됩니다. 로컬 개발 호스트에서 제공되는 사본은 실행 환경 불일치로 간주되며, 자동화 방어 기능이 대응합니다.

이 방어 기능은 여러분 자신의 에이전트, 자동화 도구, 디버거에도 똑같이 작동합니다. 실행을 중단하거나, 관련 없는 오류를 던지거나, 잘못된 결과를 만들어 낼 수 있습니다. 기능 테스트에는 별도의 테스트용 빌드를 사용하세요. 그 빌드에서 재정의하는 옵션은 테스트와 CI 문서에 나와 있습니다.

인스펙터 탐지

난독화 도구 8.0.0부터 vmDebugProtection은 불리언뿐 아니라 객체도 받습니다. 객체를 전달하면 Debug Protection은 켜 둔 채로 탐지기 하나만 완화할 수 있습니다.

JavaScript

inspectorDetection(기본값 켜짐)은 연결된 Chrome DevTools Protocol 인스펙터나 활성화된 디버거를 탐지하고 대응합니다. 브라우저의 개발자 도구를 열면 이런 세션이 연결되므로, 열린 인스펙터가 탐지되고 대응이 일어납니다. 프로덕션에서는 켜 두고, 사용자가 정당한 이유로 개발자 도구를 여는 경우에만 끄세요. 대시보드에서는 VM Debug Protection 아래의 Inspector Detection 하위 스위치(v8.0.0+)가 이 설정이며, Debug Protection을 켜면 나타납니다.

자동화 프레임워크. inspectorDetection이 켜져 있으면(기본값), CDP 기반 도구(Puppeteer, Playwright, Selenium/ChromeDriver)로 보호된 페이지를 구동하는 것은 연결된 인스펙터로 탐지됩니다. vmDebugProtection: { inspectorDetection: false }는 인스펙터 탐지기만 끕니다. Debug Protection의 자동화 탐지기는 여전히 자동으로 구동되는 브라우저에 대응할 수 있습니다. 자동화 테스트용 빌드는 vmDebugProtection과 vmSelfDefending을 끄는 테스트와 CI의 방법을 따르세요.

콘텐츠 보안 정책

콘텐츠 보안 정책(CSP)이 동적 평가를 금지한다면(unsafe-eval 없음), browser-no-eval 대상을 사용하고 해당 정책 아래에서 출력물을 검증하세요. 이 대상은 원래 동적 평가에 의존하는 검사에 대체 방식을 사용합니다. 제한적인 CSP를 가진 브라우저 확장 프로그램에도 똑같이 적용됩니다. 최상의 호환성을 위해 browser-no-eval을 사용하세요.