본문 바로가기
분석 TIP/프로텍션

JavaScript 난독화 풀기

by 두유노우컴퓨터 2025. 4. 1.

출처 : 예스쳇

 

1. 도구를 통하여 코드 정리

 

난독화된 JS의 경우 줄 바꿈 없이 전부 한 줄로 되어있는 경우가 많다. 아래 사이트 도구를 통해 코드를 보기 쉽게 만든다. 또는, Notepad++플러그인에서 JSTool → JSFormat을 통해 코드 정리가 가능하다.

 

https://beautifier.io/

 

Online JavaScript beautifier

Beautify JavaScript, JSON, React.js, HTML, CSS, SCSS, and SASS

beautifier.io

 

2. 도구를 통하여 난독화 해제

 

de4js - 다양한 난독화 패턴 자동 분석

https://lelinhtinh.github.io/de4js/

 

de4js

JavaScript Deobfuscator and Unpacker

lelinhtinh.github.io

 

Deobfuscator - 일반적인 난독화 패턴 자동 분석

https://deobfuscate.relative.im/

 

JavaScript Deobfuscator

synchrony ver. 2.2.0 A simple deobfuscator for mangled or obfuscated JavaScript files view on GitHub Deobfuscate Save output if there are any errors, open developer tools > console to see them in a better view

deobfuscate.relative.im

 

AST Explorer - Abstract Syntax Tree로 변환해 구조 분석

AST explorer

 

AST explorer

 

astexplorer.net

 

JSFuck - 자동 난독화 분석

JSfuck Decoder | De-Obfuscator

 

JSFuck de-obfuscator

JSFuck decoder, de-obfuscator

enkhee-osiris.github.io

 

3. 수동으로 난독화 해제

 

1. 코드 기본 분석

 

Sources 패널에서 대상 JS 파일을 연 후 { } 아이콘(Pretty Print)으로 코드 가독성을 개선한다. 압축된 코드가 자동으로 들여쓰기되며 변수/함수 구조가 명확해집니다. 이때 전체 실행 흐름을 파악하기 위해 전역 변수 선언 위치와 최종 실행 함수를 찾는 것이 첫 번째 과제이다.

 

2. 컨텍스트 확인

console.log(fn.toString()) // 함수 전체 코드 출력
Object.keys(window) // 전역 스코프 식별자 확인

 

하단 Console에서 키 변수/함수를 직접 선언하며 초기값을 설정한다. let a = 10; function test() {} 형태로 입력하면 undefined가 출력되지만, 이는 정상적인 선언 과정이다.

 

3. 실시간 값 검증

 

최종 실행 지점에 console.log(결과변수)를 삽입하거나, 중단점(BreakPoint) 설정 후 Scope 패널에서 호출 스택을 확인한다. 마우스 오버로 변수 값을 즉시 확인하거나 Watch에 표현식을 등록해 값 변화를 추적한다.

 

4. 반복문 디버깅

 

반복문이 포함된 경우 독립 HTML 파일로 환경을 구축한다.

<html><script>
// 대상 코드 전체 복사
debugger; // 자동 중단점 설정
</script></html>

 

파일을 브라우저로 열면 debugger 명령어에서 실행이 일시정지된다. F5 새로고침으로 반복적으로 테스트 가능하며, 조건부 중단점으로 특정 반복 횟수에서 멈출 수 있다.

 

5. 변수 포인트 캡처

 

Sources 패널에서 라인 번호 클릭으로 중단점 설정 후 실행 버튼(Resume script execution)으로 단계별 실행한다. F10(Step over)으로 함수 내부 진입 없이 다음 줄로 이동하며, F11(Step into)로 상세한 호출 흐름을 분석한다.

 

'분석 TIP > 프로텍션' 카테고리의 다른 글

Themida 도구 언패킹 방법  (1) 2025.04.29
VMProtect 메뉴얼 언패킹 방법  (0) 2025.04.28
Powershell 난독화 풀기  (0) 2025.04.08
VBScript 난독화 풀기  (0) 2025.04.06
도구로 쉽게 난독화 풀기 예시  (0) 2025.04.02