2014-10-04 4 views
3

"packer"및 "eval"과 같은 코드로 난독 화 된 자바 스크립트 코드는 인터넷에서 제공되는 다양한 도구로 쉽게 해독 할 수 있지만 최근에는 []['filter']['constructor'].....과 같은 코드로 난독 화 된 자바 스크립트 코드가 발생했습니다. 이는 디코딩에 대한 해결책이없는 것으로 보인다. 예는 다음과 같습니다 :"[] [필터] [생성자] ..."로 자바 스크립트 코드를 deobfuscate하는 방법?

[]["filter"]["constructor"]("r" + "e" + "t" + "u" + "r" + "n" + " " + "e" + "s" + "c" + "a" + 211["toString"]("!0!0!01")[+true] + "e")()("" ["italics"]()[0])[true + true] + "N" + "S" + "S" + "{" + "I" + []["filter"]["constructor"]("r" + "e" + "t" + "u" + "r" + "n" + " " + "u" + "n" + "e" + "s" + "c" + "a" + 211["toString"]("!0!0!01")[+true] + "e")()([]["filter"]["constructor"]("r" + "e" + "t" + "u" + "r" + "n" + " " + "e" + "s" + "c" + "a" + 211["toString"]("!0!0!01")[+true] + "e")()("" ["italics"]()[0])[0] + 
    "5" + "f") + 101["toString"]("!0!01")[+true] + "a" + (+"false" + []["filter"]["constructor"]("r" + "e" + "t" + "u" + "r" + "n" + " " + []["filter"]["constructor"]("r" + "e" + "t" + "u" + "r" + "n" + " " + "e" + "s" + "c" + "a" + 211["toString"]("!0!0!01")[+true] + "e")()("" ["fontcolor"]()["!01"])[true + true] + "a" + "t" + "e")()())["!0!0!00"] + "e" + []["filter"]["constructor"]("r" + "e" + "t" + "u" + "r" + "n" + " " + "u" + "n" + "e" + "s" + "c" + "a" + 211["toString"]("!0!0!01")[+true] + "e")()([]["filter"]["constructor"]("r" + 
    "e" + "t" + "u" + "r" + "n" + " " + "e" + "s" + "c" + "a" + 211["toString"]("!0!0!01")[+true] + "e")()("" ["italics"]()[0])[0] + "5" + "f") + []["filter"]["constructor"]("r" + "e" + "t" + "u" + "r" + "n" + " " + "u" + "n" + "e" + "s" + "c" + "a" + 211["toString"]("!0!0!01")[+true] + "e")()([]["filter"]["constructor"]("r" + "e" + "t" + "u" + "r" + "n" + " " + "e" + "s" + "c" + "a" + 211["toString"]("!0!0!01")[+true] + "e")()("" ["italics"]()[0])[0] + "59" + "") + "o" + "u" + []["filter"]["constructor"]("r" + 
    "e" + "t" + "u" + "r" + "n" + " " + "u" + "n" + "e" + "s" + "c" + "a" + 211["toString"]("!0!0!01")[+true] + "e")()([]["filter"]["constructor"]("r" + "e" + "t" + "u" + "r" + "n" + " " + "e" + "s" + "c" + "a" + 211["toString"]("!0!0!01")[+true] + "e")()("" ["italics"]()[0])[0] + "7" + "d"); 

어떻게 자바 스크립트를 디코드합니까?

+0

물론 코드를 해독 할 솔루션이 없으므로 코드는 'RangeError'를 발생시킵니다. ;) –

+0

인용 한 것보다 더 많은 것이 있어야합니다. –

답변

5

비 영숫자 난독 화와 매우 비슷하지만 중간 형태입니다. 예를 들어 here을보십시오.

원리는 동일합니다 1. 첨자 표기법 (문자열로 개체 이름을 변환하는) 3를 사용하여 귀하의 경우 배열 필터 생성자 2 인 코드를 평가하는 또 다른 형태에 의존한다. 문자열을 단일 문자 문자열로 분리 한 다음 유형 강제 변환을 사용하여 각 문자를 영숫자가 아닌 기호 시퀀스로 변환합니다.

디코딩은 매우 쉽지만 수동으로 수행하면 어려움이 필요합니다. 자동으로 되돌리려면 도구를 작성하는 데 1 시간 미만 걸릴 것이라고 생각합니다. 처음에는 좋은 난독 화처럼 보일 수 있지만 탄력성이 없어 쉽게 패배시킬 수 있습니다.

난독 화는 100 % 총알 방지는 아니지만 JScrambler와 같은 현대 JS 난독 화기는 기본 인코딩 기술 (평가 또는 평가 제외)보다 훨씬 깊게 진행됩니다.

영문자 이외의 난독 화 (슬라이드 33-38)에 대한 자세한 내용은 this presentation을 참조하십시오. JavaScript 난독 화에 관심이있는 경우 나머지 부분을 참조하십시오.