문서
/

시작하기

시작하기

Obfuscator.io는 읽기 쉬운 소스 코드를 이해하거나 리버스 엔지니어링하기 어려운 보호된 코드로 변환합니다. 독자적인 알고리즘, 라이선스 로직, 비즈니스에 핵심적인 코드를 보호하는 데 가장 적합합니다.

Obfuscator.io에 오신 것을 환영합니다

이 문서는 첫 파일을 난독화하고, 프리셋을 고르고, 옵션 패널을 이해하는 과정을 안내합니다. 더 깊이 있는 내용은 VM 난독화, 기본 난독화, 모범 사례 섹션을 참고하세요.

빠른 시작

  • 1. 코드를 붙여넣으세요

    왼쪽 편집기 패널에 JavaScript 코드를 입력하세요. 코드를 직접 붙여넣어도 되고, 일괄 처리를 위해 파일 업로드 기능을 사용해도 됩니다.

  • 2. 프리셋을 선택하세요

    옵션 패널의 드롭다운에서 프리셋을 선택하세요. 변경을 최소화하려면 Low Obfuscation부터, 보호와 성능의 균형을 원한다면 Medium Obfuscation부터 시작하세요. VM 프리셋이 가장 강력한 보안을 제공합니다.

  • 3. "Obfuscate"를 클릭하세요

    Obfuscate 버튼을 눌러 코드를 변환하세요. 보호된 결과물이 오른쪽 패널에 나타납니다.

  • 4. 복사하거나 다운로드하세요

    Copy 버튼이나 Download를 사용해 난독화된 코드를 가져가세요. 결과물은 바로 프로덕션에 사용할 수 있습니다.

코드 호환성 중요

난독화(VM 방식과 비 VM 방식 모두)는 일부 JavaScript 런타임 동작에 영향을 주는 방식으로 코드를 변환합니다. 코드가 다음 기능에 의존해서는 안 됩니다.

  • function.toString() / class.toString()

    난독화는 소스 코드의 표현을 완전히 바꿉니다. 함수의 소스를 파싱하거나 비교하는 코드는 동작하지 않습니다.

  • function.name / class.name

    함수와 클래스의 이름은 무작위 식별자로 바뀝니다. 로깅, 직렬화, 리플렉션에 .name을 사용하는 코드는 난독화된 이름을 받게 됩니다.

// Before obfuscation
function calculatePrice() { return 100; }
console.log(calculatePrice.name);     // "calculatePrice"
console.log(calculatePrice.toString()); // "function calculatePrice() { return 100; }"

// After obfuscation
console.log(calculatePrice.name);     // "_0x1a2b3c" (random)
console.log(calculatePrice.toString()); // Completely transformed code

기본 옵션

난독화하기 전에 대상 환경에 맞춰 다음 기본 옵션을 설정하세요.

Target target

난독화된 코드의 실행 환경을 지정합니다.

  • browser (기본값) - 일반적인 웹 페이지 환경입니다. 출력 코드는 node와 동일하지만, 일부 브라우저 전용 옵션은 node 타깃과 함께 사용할 수 없습니다.
  • browser-no-eval - browser와 같지만 출력 코드가 eval()을 사용하지 않습니다. 대상 페이지의 Content Security Policy가 eval/unsafe-eval을 금지하는 경우에 사용하세요.
  • node - Node.js 환경입니다. 브라우저 전용 옵션은 비활성화됩니다(이들은 window/document가 필요하므로 Node에서는 아무 동작도 하지 않거나 예외를 던집니다). 브라우저 전용 API에 의존하는 일부 vmSelfDefending 방어 기능, 즉 헤드리스 브라우저 탐지, iframe 기반의 깨끗한 realm 복구, 인스펙터/DOM 검사 방지 기능은 이 타깃에서는 생성되지 않습니다.
  • service-worker - Service Worker 컨텍스트입니다. windowdocument가 없고 self 전역이 다릅니다.
  • userscript - 사용자 스크립트 관리자 샌드박스입니다(예: Tampermonkey). vmSelfDefending 방어 기능이 이에 맞게 조정됩니다. 난독화 도구 v6.9.0+ 가 필요합니다.
  • bytenode - bytenode.jsc로 컴파일할 코드를 위한 타깃입니다. 난독화 도구 v6.13.0+ 가 필요합니다.

Strict Mode strictMode

난독화 도구가 JavaScript 엄격 모드를 다루는 방식을 제어합니다.

  • Auto (기본값) - 코드에서 엄격 모드를 자동으로 감지합니다. 난독화 도구가 코드의 "use strict" 지시문을 분석합니다
  • Enable - "use strict"가 있는지와 관계없이 모든 코드를 엄격 모드로 처리합니다
  • Disable - 소스 코드에 명시된 "use strict" 지시문만 엄격 모드로 처리합니다

프리셋 이해하기

프리셋은 미리 구성해 둔 옵션 조합입니다. 두 개의 그룹으로 나뉩니다.

VM 프리셋 Pro (바이트코드 가상화)

프리셋보안성능기능
VM Low양호~10x기본 VM, 간접 디스패치
VM Medium강력~12-15x+ 옵코드 셔플, 인코딩, 디코이
VM High매우 강력~15-18x+ 데드 코드, 상태 기반 옵코드, 스택 인코딩
VM Ultra High최대~20x++ 비 VM 난독화 계층

성능 수치는 평균값이며, 실제 영향은 코드에 따라 크게 달라집니다(예: 재귀가 많거나 반복이 잦은 코드는 눈에 띄게 느려집니다).

비 VM 프리셋 (표준 난독화)

프리셋보호 수준성능기능
Default기본최소문자열 배열, 단순화
Low가벼움~1.1x+ 자기 방어, 콘솔 비활성화
Medium보통~1.5x+ 제어 흐름, 데드 코드, base64
High강력~2x+ 디버그 보호, rc4 인코딩

인터페이스 살펴보기

  • 입력 편집기 - JavaScript 소스 코드를 붙여넣거나 직접 입력하세요. 파일을 끌어다 놓거나 업로드 버튼을 사용할 수 있습니다. 인라인 스크립트가 포함된 HTML 파일도 지원됩니다 Pro.
  • 출력 패널 - 난독화 결과를 보여줍니다. Copy나 Download 버튼으로 보호된 코드를 가져갈 수 있습니다.
  • 프리셋 선택기 - VM 프리셋과 비 VM 프리셋 중에서 선택하세요. VM 프리셋은 목록 위쪽에 모여 있습니다. 프리셋은 기본 옵션을 결정하며, 이후 원하는 대로 조정할 수 있습니다.
  • 옵션 패널 - 난독화 설정을 세밀하게 조정합니다. 각 옵션 옆의 ? 아이콘을 클릭하면 해당 옵션의 문서를 볼 수 있습니다.
  • Obfuscate 버튼 - 선택한 옵션으로 코드를 변환합니다. VM 프리셋은 서버에서 처리되고, 비 VM 프리셋은 브라우저에서 실행됩니다.
  • 다중 파일 업로드 Pro - 여러 파일을 한 번에 처리하고 ZIP으로 내려받습니다.
  • 히스토리 패널 Pro - 이전 난독화 기록을 확인하고 입력/출력을 복원합니다.