자바스크립트 디오프스버커
암호화된 자바스크립트 코드 조각(해시진 문자열, 단일 문자 변수 이름, 상단에 위치한 디코더 루프 포함)을 붙여넣으면 이 도구는 여러 계층을 단계적으로 분석해 나갑니다. 먼저 문자를 정상 형태로 변환하고, 조회 배열을 인라인으로 삽입하며, 변수 이름을 읽기 쉬운 플레이스홀더로 변경합니다. 또한 불필요한 래퍼를 제거하고 결과 코드를 깔끔하게 정리합니다. 페이지나 Pastebin 링크에서 가져온 의심스러운 코드 조각을 분석하는 데 매우 유용합니다.
자바스크립트의 암호화를 해제하는 방법
-
1
암호화된 소스를 붙여넣으세요
`javascript-obfuscator.io` 스타일 도구에서 생성된 미니파이드 파일, 패키지 파일 또는 출력 파일입니다.
-
2
파서가 이를 처리하도록 하세요.
스트링 배열은 디코딩되고, 숫자 시퀀스는 평가되며, 데드 코드 분기들은 제거됩니다.
-
3
이름 변경 적용
단일 문자로 구성된 변수 `a`/`b`/`c`는 `var1`, `var2` 등으로 이름이 변경됩니다. 이들은 반드시 의미 있는 이름이 아니라 읽기 쉬운 대체 이름입니다.
-
4
아름답게 만들기
정의를 명확히 하고, 줄을 추가하며, 실제로 읽고 이해할 수 있는 코드를 출력하세요.
해독 프로그램이 역행하는 기법들
| 익명화 | 역전 처리 |
|---|---|
| 헥스 셀프 탈출 문자열 리터럴 | \x48\x69를 "Hi"로 복호화합니다 |
| 유니코드로 인코딩된 식별자 | \u006E\u0061\u006D\u0065 -> name |
| 문자열 배열 + 디코더 함수 | 배열을 인라인 처리하고 파싱 시 디코더를 호출합니다 |
| 수치 상수 접힘 | 0x1F3 + 5 -> 504 |
eval(...) 랩퍼 |
내부 코드를 최상위 수준으로 올라르기 |
| 제어 흐름 평탄화(스테이트 머신 기법) | 스위치-케이스 구조를 식별하여 흐름을 재구성합니다 |
| 사용되지 않는 코드 / 무의미한 삼항 조건문 | 실행되지 않는 분기문을 제거하세요 |
_0x1a2b3c() 스타일 이름 |
점진적으로 증가하는 var1, var2로 대체합니다 |
한계: 이 도구가 수행하지 않는 기능들
- 원래의 변수 이름을 복원하세요.
userEmail가a로 이름이 변경되면 어떤 도구도 이를 다시 추정할 수 없습니다. 원래의 의미가 아니라 읽기 쉬운 구조만이 유지됩니다. - 사용자 정의 가상화 도구를 설치하세요. 대형 상용 오부스카이터(예: JScrambler, Obfuscator.io의 기업용 제품군)는 바이트코드를 해석하는 특수한 가상 머신을 제공합니다. 이러한 오버스카이터를 우회하려면 수동적인 역공학 분석이 필요합니다.
- 임의의 코드를 실행합니다. 해독 도구는 순수한 표현식을 정적으로 평가하며, 원격 리소스를 가져오거나 DOM 요소를 생성하거나 네트워크와 통신하지 않습니다.
대표적인 사용 사례
- 보안 연구: 이메일을 통해 수신된 의심스러운 스크립트나 침해된 CDN을 통해 전달된 스크립트를 분석하는 작업.
- 코드 고고학: 유일하게 남아 있는 유물이 축소된 코드 패키지인 레거시 코드를 복원하는 작업.
- 학습: 튜토리얼 수준의 익명화 기술이 실제로 내부적으로 어떤 역할을 하는지 이해하는 것.
안전성 및 윤리
중요한 계정에 로그인된 브라우저 탭에서 신뢰할 수 없는 자바스크립트 코드를 실행하지 마십시오. 해당 코드는 쿠키를 읽거나 내부 API를 호출하며 사용자 상태 정보를 유출할 수 있습니다. 디오브퍼스케이터는 입력된 코드를 문자열 형태로 처리하며, 별도로 실행되지 않습니다.
분석할 권한이 있는 코드만 해독해야 합니다. 라이선스가 부여된 소프트웨어의 역공학은 귀하의 관할 지역에서 제한될 수 있습니다.
자주 묻는 질문
아니요. 오브퍼스커가 userEmail를 _0x1a2b3c로 이름을 변경하면 원래의 이름은 사라집니다. 디오버퍼스커는 읽을 수 있는 대체 이름(var1, var2)과 올바른 구조만 제공하지만, 원래의 의미 기반 이름은 제공하지 않습니다.
아니요. 이 기능은 코드를 AST로 파싱한 후 정적 변환을 적용합니다. 순수 표현식(0x1F3 + 5와 같은 형태)은 처리되지만, 네트워크나 쿠키, DOM에는 아무런 영향도 미치지 않습니다.
네, 하지만 번들러의 출력 결과는 의도적으로 혼란스럽게 처리하기보다는 최소화되어 있으므로, 결과는 모듈 랩퍼가 복원된 상태로 단순히 개선된 코드만입니다. 별도로 제공되는 소스 맵을 활용하면 훨씬 더 명확하고 직관적인 이름을 사용할 수 있습니다.
대규모 업계용 도구들(엔터프라이즈용 JScrambler, 맞춤형 가상 머신 등)은 정적 분석으로는 해독할 수 없는 바이트코드 해석기를 내장하고 있습니다. 이러한 도구들은 표면적인 구조만을 파악할 수 있지만, 핵심 로직은 수동적인 역설계 없이는 여전히 불투명하게 남아 있습니다.
관련 도구
ASCII 표 참조
NUL, LF, DEL 같은 제어 문자를 포함해 모든 문자에 대한 10진수, 16진수, 8진수, 2진수, HTML 숫자 문자 참조를 담은 0부터 127까지의 전체 ASCII 표.
HTML 문자 참조
HTML 엔티티의 검색 가능한 목록, 각 엔티티의 이름 및 숫자 코드, 그리고 특수 문자 및 기호에 대한 1클릭 복사 기능을 제공합니다.
키보드 단축키 참고표
macOS, Windows, Linux에서 VS Code, Chrome, GNU Readline을 쓰는 Bash의 문서화된 기본 단축키를 검색합니다.
보색 찾기
어떤 입력에 대해서도 보색을 찾습니다. HSL 반대 색, 분할 보색 쌍, 그리고 접근성 있는 조합 제안을 반환합니다.
색상 틴트 생성기
기준 색의 밝은 틴트를 생성합니다. 디자인 시스템 토큰, 배경, 호버 상태를 위한 3-20단계 스케일.
이메일 검증기
이메일 주소를 검증합니다. RFC 5322 구문 검사, 실시간 MX 레코드 조회, 그리고 로컬 파트, 도메인, 길이 정보를 제공합니다. 이메일은 전송되지 않습니다.
이 도구는 다른 언어로도 제공됩니다
- เครื่องถอดรหัส JavaScript [TH]
- Déobfuscateur JavaScript [FR]
- Deobfuscator JavaScript [ID]
- Desofuscador de JavaScript [PT]
- JavaScript-deobfuscator [NL]
- أداة إزالة التشفير في لغة جافا سكريبت (JavaScript Deobfuscator) [AR]
- JavaScript-Deobfuscator [DE]
- Desofuscador de JavaScript [ES]
- JavaScript-deobfuscator [SV]
- Trình giải mã mã JavaScript (JavaScript Deobfuscator) [VI]
- JavaScriptデオブファスカータ [JA]
- Deobfuskator JavaScriptu [PL]
- JavaScript反混淆工具 [ZH]
- JavaScript Deobfuscator [EN]
- Deobfuscator JavaScript [IT]
- JavaScript-деобфускатор [RU]
- JavaScript Deobfuscator [TR]