시작하기
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 컨텍스트입니다.window와document가 없고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 - 이전 난독화 기록을 확인하고 입력/출력을 복원합니다.
