자바스크립트 디오프스버커

암호화된 자바스크립트 코드 조각(해시진 문자열, 단일 문자 변수 이름, 상단에 위치한 디코더 루프 포함)을 붙여넣으면 이 도구는 여러 계층을 단계적으로 분석해 나갑니다. 먼저 문자를 정상 형태로 변환하고, 조회 배열을 인라인으로 삽입하며, 변수 이름을 읽기 쉬운 플레이스홀더로 변경합니다. 또한 불필요한 래퍼를 제거하고 결과 코드를 깔끔하게 정리합니다. 페이지나 Pastebin 링크에서 가져온 의심스러운 코드 조각을 분석하는 데 매우 유용합니다.

자바스크립트의 암호화를 해제하는 방법

  1. 1

    암호화된 소스를 붙여넣으세요

    `javascript-obfuscator.io` 스타일 도구에서 생성된 미니파이드 파일, 패키지 파일 또는 출력 파일입니다.

  2. 2

    파서가 이를 처리하도록 하세요.

    스트링 배열은 디코딩되고, 숫자 시퀀스는 평가되며, 데드 코드 분기들은 제거됩니다.

  3. 3

    이름 변경 적용

    단일 문자로 구성된 변수 `a`/`b`/`c`는 `var1`, `var2` 등으로 이름이 변경됩니다. 이들은 반드시 의미 있는 이름이 아니라 읽기 쉬운 대체 이름입니다.

  4. 4

    아름답게 만들기

    정의를 명확히 하고, 줄을 추가하며, 실제로 읽고 이해할 수 있는 코드를 출력하세요.

해독 프로그램이 역행하는 기법들

익명화 역전 처리
헥스 셀프 탈출 문자열 리터럴 \x48\x69"Hi"로 복호화합니다
유니코드로 인코딩된 식별자 \u006E\u0061\u006D\u0065 -> name
문자열 배열 + 디코더 함수 배열을 인라인 처리하고 파싱 시 디코더를 호출합니다
수치 상수 접힘 0x1F3 + 5 -> 504
eval(...) 랩퍼 내부 코드를 최상위 수준으로 올라르기
제어 흐름 평탄화(스테이트 머신 기법) 스위치-케이스 구조를 식별하여 흐름을 재구성합니다
사용되지 않는 코드 / 무의미한 삼항 조건문 실행되지 않는 분기문을 제거하세요
_0x1a2b3c() 스타일 이름 점진적으로 증가하는 var1, var2로 대체합니다

한계: 이 도구가 수행하지 않는 기능들

  • 원래의 변수 이름을 복원하세요. userEmaila로 이름이 변경되면 어떤 도구도 이를 다시 추정할 수 없습니다. 원래의 의미가 아니라 읽기 쉬운 구조만이 유지됩니다.
  • 사용자 정의 가상화 도구를 설치하세요. 대형 상용 오부스카이터(예: JScrambler, Obfuscator.io의 기업용 제품군)는 바이트코드를 해석하는 특수한 가상 머신을 제공합니다. 이러한 오버스카이터를 우회하려면 수동적인 역공학 분석이 필요합니다.
  • 임의의 코드를 실행합니다. 해독 도구는 순수한 표현식을 정적으로 평가하며, 원격 리소스를 가져오거나 DOM 요소를 생성하거나 네트워크와 통신하지 않습니다.

대표적인 사용 사례

  • 보안 연구: 이메일을 통해 수신된 의심스러운 스크립트나 침해된 CDN을 통해 전달된 스크립트를 분석하는 작업.
  • 코드 고고학: 유일하게 남아 있는 유물이 축소된 코드 패키지인 레거시 코드를 복원하는 작업.
  • 학습: 튜토리얼 수준의 익명화 기술이 실제로 내부적으로 어떤 역할을 하는지 이해하는 것.

안전성 및 윤리

중요한 계정에 로그인된 브라우저 탭에서 신뢰할 수 없는 자바스크립트 코드를 실행하지 마십시오. 해당 코드는 쿠키를 읽거나 내부 API를 호출하며 사용자 상태 정보를 유출할 수 있습니다. 디오브퍼스케이터는 입력된 코드를 문자열 형태로 처리하며, 별도로 실행되지 않습니다.

분석할 권한이 있는 코드만 해독해야 합니다. 라이선스가 부여된 소프트웨어의 역공학은 귀하의 관할 지역에서 제한될 수 있습니다.

자주 묻는 질문

아니요. 오브퍼스커가 userEmail_0x1a2b3c로 이름을 변경하면 원래의 이름은 사라집니다. 디오버퍼스커는 읽을 수 있는 대체 이름(var1, var2)과 올바른 구조만 제공하지만, 원래의 의미 기반 이름은 제공하지 않습니다.

아니요. 이 기능은 코드를 AST로 파싱한 후 정적 변환을 적용합니다. 순수 표현식(0x1F3 + 5와 같은 형태)은 처리되지만, 네트워크나 쿠키, DOM에는 아무런 영향도 미치지 않습니다.

네, 하지만 번들러의 출력 결과는 의도적으로 혼란스럽게 처리하기보다는 최소화되어 있으므로, 결과는 모듈 랩퍼가 복원된 상태로 단순히 개선된 코드만입니다. 별도로 제공되는 소스 맵을 활용하면 훨씬 더 명확하고 직관적인 이름을 사용할 수 있습니다.

대규모 업계용 도구들(엔터프라이즈용 JScrambler, 맞춤형 가상 머신 등)은 정적 분석으로는 해독할 수 없는 바이트코드 해석기를 내장하고 있습니다. 이러한 도구들은 표면적인 구조만을 파악할 수 있지만, 핵심 로직은 수동적인 역설계 없이는 여전히 불투명하게 남아 있습니다.

관련 도구

이 도구는 다른 언어로도 제공됩니다