문서
/

브라우저 환경

Browser Environment

Pro
v7.9.0+

프로덕션 빌드가 어떻게 제공되는지 선언하여 보호된 코드가 무결성을 그에 결속하도록 합니다.

browserEnvironment 옵션은 프로덕션 빌드가 제공되는 환경에 대한 사실을 선언하여, 보호된 코드가 그 사실에 자신을 결속시키거나 반응할 수 있게 합니다. 작은 객체이며, 각 필드는 특정 보호 기능 하나와 함께 사용할 때만 적용됩니다 - 이 옵션 단독으로는 아무 동작도 하지 않습니다:

JavaScript

transport

프로덕션이 번들을 제공하는 스킴 - 'http' 또는 'https'. vmSelfDefending과 함께 사용할 때 적용됩니다.

'https'를 지정하면 리버스 엔지니어가 일반 HTTP로 제공하는 사본은 올바르게 실행되지 않습니다. 'http'이거나 필드를 설정하지 않으면 그러한 보호가 추가되지 않습니다.

transport: 'https'로 선언된 빌드는 실제로 https:로 제공되는 곳에서 올바르게 동작합니다. 다른 모든 스킴은 빌드를 손상시키므로, 프로덕션 빌드를 로드하는 모든 컨텍스트가 HTTPS일 때만 선언하세요. 여기에서 제외되는 것은 다음과 같습니다:

  • 일반 http://(개발 중의 http://localhost 포함);
  • file:// - Electron, Cordova 및 기타 패키징된 앱;
  • blob:about: 임베딩 - about:blank 또는 srcdoc iframe 안에서 실행되는 번들.

클라이언트 측 HTTP→HTTPS 리디렉션도 HTTP 페이지를 먼저 렌더링하므로, 리디렉션이 끝나기 전에 번들이 실행되어서는 안 됩니다.

hosting

프로덕션 번들이 제공되는 위치 - 'remote' 또는 'local'. vmDebugProtection과 함께 사용할 때, browserbrowser-no-eval 타깃에서만 적용됩니다. 난독화 도구 버전 7.14.0 이상이 필요합니다.

'remote'로 설정하면, 리버스 엔지니어가 가져가 자신의 로컬 환경에서 실행하는 복사본은 런타임 환경 불일치로 취급되며, 자동화 방어가 vmDefenseReaction에 설정된 대로 반응합니다. 'local'이거나 필드를 설정하지 않으면 이런 보호는 추가되지 않습니다.

hosting: 'remote'를 선언한 빌드는 원격 호스트에서 로드될 때 올바르게 동작합니다. 로컬 환경 - localhost, 개발 서버, file:// - 에서 연 번들은 의도적으로 불일치로 취급되므로, 프로덕션 빌드를 로드하는 모든 컨텍스트가 원격으로 제공될 때만 선언하고, 로컬 개발·테스트·CI에 사용하는 빌드에는 넣지 마세요.

hookedBuiltins

프로덕션 빌드가 실행되는 런타임이 네이티브 내장 객체를 정당하게 JavaScript 래퍼로 교체한다는 것(앱 자체의 변조 방지, 호스트 페이지, 같은 realm을 공유하는 다른 브라우저 확장 프로그램 등)을 선언하려면 true로 설정합니다. vmSelfDefending과 함께 사용할 때 적용됩니다. 난독화 도구 버전 7.15.0 이상이 필요합니다.

일반적으로 Self Defending은 교체된 네이티브 내장 객체를 변조로 간주하고 빌드 실행을 중단합니다. hookedBuiltins: true로 설정하면 그러한 환경을 허용하며 보호된 코드는 계속 실행됩니다. false 또는 설정하지 않은 필드는 엄격한 동작을 유지합니다.

JavaScript

hookedBuiltins는 변조 탐지를 의도적으로 완화합니다. 설정하고 나면 코드를 살펴보기 위해 같은 내장 객체를 래핑하는 분석가도 더 이상 차단되지 않습니다. VM 가상화, 디버깅 방지, 무결성 보호는 영향을 받지 않습니다. 프로덕션 런타임이 내장 객체를 후킹한다는 사실이 확실하고 그 약해진 보장을 받아들일 수 있는 경우에만 활성화하세요.

지원되는 타깃

browserEnvironmentbrowser, browser-no-eval, service-worker 타깃에만 적용됩니다. node, userscript, bytenode에서는 옵션이 거부되어, 설정을 조용히 버리는 대신 검증 오류로 난독화가 실패합니다. hosting은 그보다 더 좁습니다. service worker에서 허용은 되지만 거기서는 아무것도 결속시키지 않습니다.

대시보드에서 Transport, Hosting, Hooked Builtins 컨트롤은 Advanced Protection 패널에 있습니다. 각각은 짝이 되는 보호 기능이 켜져 있고 - Transport와 Hooked Builtins는 VM Self Defending, Hosting은 VM Debug Protection - 타깃이 이를 지원할 때만 편집할 수 있습니다.

요구 사항

  • transporthookedBuiltinsvmSelfDefending과, hostingvmDebugProtection과 함께 사용할 때 적용됩니다. 그 외에는 모두 아무 동작도 하지 않습니다.
  • browser, browser-no-eval 또는 service-worker 타깃(hostingbrowser 또는 browser-no-eval).
  • 난독화 도구 버전이 transport7.9.0 이상, hosting7.14.0 이상, hookedBuiltins7.15.0 이상.

예시

JavaScript