VM Self Defending
시청
Obfuscator.io Advanced Defenses: Self-Defending, Debug Protection, Domain Lock
vmSelfDefending 옵션은 VM 런타임에 다층 변조 탐지, 코드 무결성 검사, 후킹 방지, 리버스 엔지니어링 방지 보호를 추가합니다. vmDebugProtection과 함께 사용하면 수동 분석과 AI 보조 분석을 모두 훨씬 어렵게 만듭니다.
이 옵션은 vmBytecodeArrayEncoding을 강제로 켜며 VM 실행에 오버헤드를 더합니다. 자신의 자주 실행되는 경로에서 측정하세요.
각 탐지가 어떻게 대응하는지, 그리고 단순히 동작을 깨뜨리는 대신 탐지 결과를 백엔드로 보고하는 방법은 VM 방어 텔레메트리 및 대응에서 다룹니다. vmSelfDefending은 automation, debugger, tamper, integrity 대응 카테고리로 탐지를 보고합니다.
권장: 최대한의 보호를 위해 vmDebugProtection, vmBytecodeArrayEncodingKey, vmBytecodeArrayEncodingKeyGetter와 함께 사용하세요.
실행 환경 호환성
민감한 환경 탐지
이 옵션은 난독화된 코드를 대상 실행 환경에 결속하고, 고급 브라우저 핑거프린팅으로 자동화 도구를 탐지합니다. 이 옵션으로 보호된 코드는 다음 환경에서 실행하면 의도적으로 중단됩니다.
- 헤드리스 브라우저(헤드리스 Chrome/Chromium, PhantomJS)
- 브라우저 자동화 도구(Puppeteer, Playwright, Cypress, Selenium/ChromeDriver, Nightmare)
- Node.js(
target이browser로 설정된 경우) - jsdom 또는 이와 비슷한 서버 측 DOM 에뮬레이션
- 네이티브 브라우저 내장 객체가 후킹되거나 교체된 환경(
browserEnvironment.hookedBuiltins로 선언한 경우 제외)
일반 브라우저(Chrome, Firefox, Safari, Edge)에서는 iframe 안에서 로드되는 경우, 브라우저 확장 프로그램(콘텐츠 스크립트), Web Worker를 포함해 올바르게 동작합니다.
실제 실행 환경에 맞는 target을 선택하세요. Browser 빌드와 Node 빌드에는 서로 다른 방어 기능이 들어 있습니다. node 대상은 브라우저 전용 API에 의존하는 방어 기능을 빼며, Node에서 실행한 browser 빌드는 위에 나열한 대로 중단됩니다.
browserEnvironment.hookedBuiltins를 true로 설정하면(v7.15.0+), Self Defending은 네이티브 내장 객체를 정당하게 JavaScript 래퍼로 교체하는 런타임을 변조로 취급하지 않고 허용하므로, 보호된 코드가 그런 환경에서도 실행됩니다. 이는 내장 객체 후킹 탐지를 의도적으로 완화하는 것이며, VM 가상화, 디버깅 방지, 무결성 보호에는 영향을 주지 않습니다. 같은 옵션의 transport 필드는 빌드를 제공되는 스킴에 결속합니다.
Self Defending은 자신의 출력물 무결성을 검사하므로, 난독화된 코드를 나중에 압축(minify)하거나 포맷하거나 다른 방식으로 다시 작성하지 마세요. 이런 도구는 난독화 단계 전에 소스에 대해 실행하세요.
테스트와 CI
이 방어 기능은 여러분 자신의 에이전트, 자동화 도구, 디버거에도 똑같이 작동합니다. 실행을 중단하거나, 관련 없는 오류를 던지거나, 잘못된 결과를 만들어 낼 수 있습니다. 이 옵션은 자동화된 분석을 막도록 설계되었으며 어떤 자동화 프레임워크와도 안전하게 함께 사용할 수 없으므로, 기능 테스트는 vmSelfDefending을 끈 별도의 테스트용 빌드를 대상으로 실행하세요. 그 빌드에 필요한 전체 재정의 목록은 테스트와 CI 문서에 있습니다.
