자바스크립트 패킹(packing) 툴 소개

Posted in 모바일/Javascript // Posted at 2010. 9. 29. 14:30
728x90

코드를 알아 보기 힘들게 만드는 것을 '코드 난독화' 라고 한다
닷넷이나 자바와 가은 가상머신 기반의 프로그램은 컴퓨터가 직접 해석할 수 있는 네이티브 코드 생성 이전에 중간언어과정을 거치게 되어 있다

이러한 중간언어는 '디스어셈블러' 같은 툴로 다시 원 코드로 복원시킬 수 있다
이렇게 되면 배포된 프로그램의 소스를 쉽게 읽을 수 있기 때문에 코드 낙독 처리를 통해 소스의 가독성을 떨어뜨려 소스를 보호하게 된다

특히나 웹의 경우 소스는 여지없이 공개되는 구조이다
HTML, CSS 는 물론이고 자바스크립트 코드도 모두 공개되는 구조이다

자바스크립트 패킹은 일종의 소스 보호 차원에서 스크립트 코드를 난독화하고 더불어 소스를 압축 및 최소화하여 다운로드 속도도 향상시켜 주기 때문에 많은 곳에서 적용하고 있다

이 블로그에서 소개한 Raphale 과 같은 라이브러리도 아래와 같이 패킹되어 있다



즉 자바스크립트 패킹은 난독화 처리 및 소스 사이즈를 줄여 소스를 보호하고 다운로드 성능을 향상시키기 위해 사용하는 방법이다

물론 패킹된 스크립트를 언패킹 하면 소스 보호의 의미는 사라진다 할 수 있으나
일부 언패킹이 불가능한 패킹 방법도 있으니 참고 바란다

스크립트를 패킹해 주는 툴은 몇 가지가 있는데, 대표적을 한가지를 소개한다
웹에서 바로 패킹/언패킹을 해 볼 수 있는 툴이다
http://dean.edwards.name/packer/
http://www.strictly-software.com/unpacker#unpacker

참고로 악성스크립트도 이와 같이 패킹되는 추세이니 참고 바란다